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

What are the limitations of partial indexes?

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

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

Can I use any filter expression?

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

例如 $NOT$REGEX$OR

您可以在 MongoDB here.

的源代码中看到

What are those limitations?

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

  • _id 索引不能是部分索引。
  • 稀疏索引不能是部分索引。
  • 分片键索引不能是部分索引。
  • 3.2 之前的版本不支持部分索引。