我想创建一个聚合管道,其中一个匹配项使用来自其他集合(内部查询)的结果。这是一个例子:
db.users.aggregate([
{"$match":{"id":{"$in":["0","1","2"]},"p": {$in: db.groups.distinct("p", {"enable":true)}}},
{"$group":{"_id":"$v","number":{"$sum":1}}}
])
我需要从javascript进行查询。实际上,该应用程序是带有 mongoose的nodejs。
不幸的是,当猫鼬执行查询时,我得到:
MongoError: $in needs an array
这是猫鼬打印的查询:
Mongoose: users.aggregate([
{"$match":{"id":{"$in":["0","1","2"]},"p": {$in: 'db.groups.distinct("p", {"enable":true)'}},
{"$group":{"_id":"$v","number":{"$sum":1}}}
])
谁能帮助我如何从 javascript 传递内部查询?
更新: 集合是分片的,所以我不能使用$lookup这就是我想将 $in 与 distinct 一起使用的原因