我有两个集合,它们都有一个共同的领域:
收藏1
{
"myCommonFieldId" : 1
}
{
"myCommonFieldId" : 2
}
{
"myCommonFieldId" : 3
}
{
"myCommonFieldId" : 4
}
{
"myCommonFieldId" : 5
}
收藏2
{
"myCommonFieldId" : 2
}
{
"myCommonFieldId" : 5
}
我想从 collection1 which are not in
collection2 (两个集合之间不常见的myCommonFieldId
-s)中获取文档。在这种情况下:
{
"myCommonFieldId" : 1
}
{
"myCommonFieldId" : 3
}
{
"myCommonFieldId" : 4
}
直接的解决方案是查询 collection2 ,获取结果并在 collection1 中运行 $ nin >
db.collection2.find({});
db.collection1.find({"myCommonFieldId" : {$nin : [<Result from query1>]}})
我有一个庞大的数据集,并且由于 $ nin 运算符效率不高,因此$ nin对我来说变得非常昂贵:引用MongoDB文档:
不等式运算符$ nin选择性不高,因为它通常与索引的很大一部分匹配。结果,在很多情况下,带有索引的$ nin查询的性能可能不如必须扫描集合中所有文档的$ nin查询。
有什么有效的方法吗?