4
最新版本的MongoDB(v3.2)增加了對partial (filtered) indexes的支持。您在創建索引時提供過濾器,並且該過濾器確定索引中將引用哪些文檔,哪些不會。部分索引的侷限性是什麼?
我可以使用任何過濾器表達式(只要它是一個有效的過濾器)?或者是否對使用的過濾器有限制?如果是這樣,那麼這些限制是什麼?
最新版本的MongoDB(v3.2)增加了對partial (filtered) indexes的支持。您在創建索引時提供過濾器,並且該過濾器確定索引中將引用哪些文檔,哪些不會。部分索引的侷限性是什麼?
我可以使用任何過濾器表達式(只要它是一個有效的過濾器)?或者是否對使用的過濾器有限制?如果是這樣,那麼這些限制是什麼?
我可以使用任何過濾器表達式嗎?
不,部分索引僅支持所使用的過濾器中的運算符的子集。唯一支持的運營商:$AND
(僅在頂層),$EQ
,$LT
,$LTE
,$GT
,$GTE
,$EXISTS
和TYPE_OPERATOR
。
這使得,例如$NOT
,$REGEX
,$OR
等
你可以看到,在源MongoDB的here。
這些限制是什麼?
也有對部分索引一些常規限制:
_id
索引不能是局部的索引。
它似乎不能從C#驅動程序完成。至少我沒有看到PartialIndexFilter作爲CreateIndexOptions類的屬性 –
@RalphShillington ['PartialFilterExpression'](http://api.mongodb.com/csharp/current/html/P_MongoDB_Driver_CreateIndexOptions_1_PartialFilterExpression.htm)? – i3arnon
@ i3amon你是對的!我的錯誤是在做var options = new CreateIndexOptions();無需設置泛型類型。 –