8

最新版本的 MongoDB (v3.2) 增加了对部分(过滤)索引的支持。您在创建索引时提供了一个过滤器,该过滤器确定哪些文档将在索引中引用,哪些不会。

我可以使用任何过滤器表达式(只要它是有效的过滤器)?或者使用的过滤器有限制吗?如果是这样,这些限制是什么?

4

1 回答 1

18

我可以使用任何过滤器表达式吗?

不,部分索引仅支持所用过滤器中运算符的子集。唯一受支持的运算符是:($AND仅在顶层)、$EQ$LT$LTE$GT$GTE$EXISTS.TYPE_OPERATOR

这省略了,例如$NOT, $REGEX,$OR等。

您可以在此处的 MongoDB 源代码中看到这一点。

这些限制是什么?

部分索引也有一些一般限制:

  • _id索引不能是部分索引。
  • 稀疏索引不能是部分索引。
  • 分片键索引不能是部分索引。
  • 3.2 之前的版本不支持部分索引。
于 2015-12-15T15:10:28.340 回答