部分索引的局限性是什么?
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
、$EXISTS
和 TYPE_OPERATOR
.
例如 $NOT
、$REGEX
、$OR
等
您可以在 MongoDB here.
的源代码中看到
What are those limitations?
部分索引也有一些一般限制:
_id
索引不能是部分索引。
- 稀疏索引不能是部分索引。
- 分片键索引不能是部分索引。
- 3.2 之前的版本不支持部分索引。
最新版本 MongoDB (v3.2) 添加了对 partial (filtered) indexes 的支持。您在创建索引时提供一个过滤器,该过滤器决定哪些文档将在索引中引用,哪些不会。
我可以使用任何过滤器表达式(只要它是有效的过滤器)吗?或者对所使用的过滤器有限制吗?如果是这样,这些限制是什么?
Can I use any filter expression?
不,部分索引仅支持所用过滤器中运算符的子集。唯一支持的运算符是:$AND
(仅在顶层)、$EQ
、$LT
、$LTE
、$GT
、$GTE
、$EXISTS
和 TYPE_OPERATOR
.
例如 $NOT
、$REGEX
、$OR
等
您可以在 MongoDB here.
的源代码中看到What are those limitations?
部分索引也有一些一般限制:
_id
索引不能是部分索引。- 稀疏索引不能是部分索引。
- 分片键索引不能是部分索引。
- 3.2 之前的版本不支持部分索引。