【发布时间】:2016-03-21 10:44:31
【问题描述】:
最新版本的 MongoDB (v3.2) 增加了对 partial (filtered) indexes 的支持。您在创建索引时提供了一个过滤器,该过滤器决定了哪些文档将在索引中被引用,哪些不会。
我可以使用任何过滤器表达式(只要它是有效的过滤器)?或者使用的过滤器有限制吗?如果有,有哪些限制?
【问题讨论】:
标签: mongodb indexing filtered-index partial-index
最新版本的 MongoDB (v3.2) 增加了对 partial (filtered) indexes 的支持。您在创建索引时提供了一个过滤器,该过滤器决定了哪些文档将在索引中被引用,哪些不会。
我可以使用任何过滤器表达式(只要它是有效的过滤器)?或者使用的过滤器有限制吗?如果有,有哪些限制?
【问题讨论】:
标签: mongodb indexing filtered-index partial-index
我可以使用任何过滤器表达式吗?
不,部分索引仅支持所用过滤器中运算符的子集。唯一支持的运算符是:$AND(仅在顶层)、$EQ、$LT、$LTE、$GT、$GTE、$EXISTS 和 TYPE_OPERATOR。
省略,例如 $NOT、$REGEX、$OR 等。
您可以在 MongoDB here 的源代码中看到。
这些限制是什么?
部分索引也有一些一般限制:
_id 索引不能是部分索引。【讨论】:
PartialFilterExpression 怎么样?
_id 部分索引(使用不同的名称)? (我正在尝试制作某种默认过滤器视图,它会自动排除列入黑名单的内容)