部分索引的局限性是什么?

i3a*_*non 6 indexing mongodb filtered-index partial-index

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

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

i3a*_*non 15

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

不,部分索引仅支持所使用的过滤器中的运算符的子集.唯一支持的运营商有:$AND(只在顶层)$EQ,$LT,$LTE,$GT,$GTE,$EXISTSTYPE_OPERATOR.

这使得,例如$NOT,$REGEX,$OR等.

你可以看到,在源的MongoDB 这里.

这些限制是什么?

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

  • _id 索引不能是部分索引.
  • 稀疏索引不能是部分索引.
  • 分片键索引不能是部分索引.
  • 早于3.2的版本不支持部分索引.