MongoDB:高效的$ nin运算符

时间:2018-12-07 07:22:23

标签: mongodb performance

我有两个集合,它们都有一个共同的领域:

收藏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查询。

有什么有效的方法吗?

0 个答案:

没有答案