计算Mongo中引用的对象的数量

给定两个集合,如:

users: name posts: title user_id 

如何有效地查询超过5个post的用户?

我可以使用$lookup进行聚合,但是对于大型数据集来说需要很长时间。

另一个select是维护users的“postCount”,但我想避免必须保持这一点。

我在节点上使用Mongoose。

使用$lookup$redactpipe道进行过滤的高效汇总查询如下所示:

 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); })