$ all如何使用多键索引?

时间:2012-06-15 15:22:18

标签: mongodb

我试图了解$ all运算符如何使用多键索引。

Mongo documentation表示数组的索引:

  

导致数据库索引数组的每个元素

所以,如果我有两个嵌入式数组的文档[a b c d]和[b c],我相信结果索引将如下所示:

a
b
b
c
c
d

现在假设我发出$ all [b c]的查询,我希望两个文档都匹配。但是上述索引如何才能找到这些文件?

2 个答案:

答案 0 :(得分:2)

像$ all [b,c]这样的查询会发生的事情是索引用于查找包含“b”的文档,然后检查所有这些文档以查看它们是否也包含“c”。索引有点帮助,因为它缩小了需要检查的文档数量。但在某些情况下,查询仍可能需要一段时间。

答案 1 :(得分:2)

我可以确认@matulef说的是什么,因此可以建议您订购参数,以便最不频繁的值在$ all数组中。这样可以最大限度地减少Mongo需要扫描的对象数量,以检查其他$ all值是否也存在。