作为一名mongodb新手,我似乎无法弄清楚如何做这个简单的查询:
我有一系列值:[1,2,4,5,6,7]和这样的文件:
{" test" :1} {" test" :2} {" test" :3}
现在我想查询哪些值不在任何文档测试属性中。 我试过像这样使用$ setDifference: db.testDocs.aggregate([{$ project:{test:1,notInList:{$ setDifference:[[1,2,3,4,5,6]," $ id"]},_id :0}}])
但这显然是不正确的。事实上,我甚至不确定$ setDifference是否是这样查询的最佳方式。如果它是如何使其工作?如果它不是最好的方式呢?
哦,查询实际上超过了10万个值,但我只是简化了这个问题的情况。
提前感谢您的回复。
答案 0 :(得分:0)
好的,我不确定这是执行此查询的最有效方法,但这就是我解决它的方法:
db.testDocs.aggregate(
[
{
$group:
{
"_id":null,
values:
{
$push: "$test"
}
}
},
{
$project: {
difference: {
$setDifference: [[1,2,3,4,5,6,7,8], "$values"]
}
}
}
])
实际上非常简单。我只是不知道如何正确使用聚合框架。