最新版本的 MongoDB (v3.2) 增加了对部分(过滤)索引的支持。您在创建索引时提供了一个过滤器,该过滤器确定哪些文档将在索引中引用,哪些不会。
我可以使用任何过滤器表达式(只要它是有效的过滤器)?或者使用的过滤器有限制吗?如果是这样,这些限制是什么?
最新版本的 MongoDB (v3.2) 增加了对部分(过滤)索引的支持。您在创建索引时提供了一个过滤器,该过滤器确定哪些文档将在索引中引用,哪些不会。
我可以使用任何过滤器表达式(只要它是有效的过滤器)?或者使用的过滤器有限制吗?如果是这样,这些限制是什么?
我可以使用任何过滤器表达式吗?
不,部分索引仅支持所用过滤器中运算符的子集。唯一受支持的运算符是:($AND
仅在顶层)、$EQ
、$LT
、$LTE
、$GT
、$GTE
和$EXISTS
.TYPE_OPERATOR
这省略了,例如$NOT
, $REGEX
,$OR
等。
您可以在此处的 MongoDB 源代码中看到这一点。
这些限制是什么?
部分索引也有一些一般限制:
_id
索引不能是部分索引。