计算Mongo中引用的对象的数量
给定两个集合,如:
users: name posts: title user_id
如何有效地查询超过5个post的用户?
我可以使用$lookup
进行聚合,但是对于大型数据集来说需要很长时间。
另一个select是维护users
的“postCount”,但我想避免必须保持这一点。
我在节点上使用Mongoose。
使用$lookup
和$redact
pipe道进行过滤的高效汇总查询如下所示:
User.aggregate([ { "$lookup": { "from": "posts", "localField": "_id", "foreignField": "user_id", "as": "posts" } }, { "$redact": { "$cond": [ { "$gt": [ { "$size": "$posts" }, 5 ] }, "$$KEEP", "$$PRUNE" ] } } ]).exec(function(err, results){ if (err) throw err; console.log(results); })