0

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

Mongo 文档说数组上的索引:

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

因此,如果我有两个包含嵌入数组 [abcd] 和 [bc] 的文档,我相信生成的索引将如下所示:

a
b
b
c
c
d

现在假设我对 $all [bc] 发出查询,我希望两个文档都匹配。但是上面的索引对于查找这些文档有什么用呢?

4

2 回答 2

2

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

于 2012-06-15T15:54:15.317 回答
2

我可以确认@matulef 所说的内容,因此可以建议您对参数进行排序,以便最不频繁的值在 $all 数组中排在第一位。这最大限度地减少了 Mongo 需要扫描以检查其他 $all 值是否也存在的对象数量。

于 2012-06-16T15:07:21.827 回答