2015-12-15 83 views
4

最新版本的MongoDB(v3.2)增加了對partial (filtered) indexes的支持。您在創建索引時提供過濾器,並且該過濾器確定索引中將引用哪些文檔,哪些不會。部分索引的侷限性是什麼?

我可以使用任何過濾器表達式(只要它是一個有效的過濾器)?或者是否對使用的過濾器有限制?如果是這樣,那麼這些限制是什麼?

回答

10

我可以使用任何過濾器表達式嗎?

不,部分索引僅支持所使用的過濾器中的運算符的子集。唯一支持的運營商:$AND(僅在頂層),$EQ$LT$LTE$GT$GTE$EXISTSTYPE_OPERATOR

這使得,例如$NOT$REGEX$OR

你可以看到,在源MongoDB的here

這些限制是什麼?

也有對部分索引一些常規限制:

  • _id索引不能是局部的索引。
  • 稀疏索引不能是部分索引。
  • 碎片鍵索引不能是部分索引。
  • 早於3.2版本不支持部分索引。
+0

它似乎不能從C#驅動程序完成。至少我沒有看到PartialIndexFilter作爲CreateIndexOptions類的屬性 –

+0

@RalphShillington ['PartialFilterExpression'](http://api.mongodb.com/csharp/current/html/P_MongoDB_Driver_CreateIndexOptions_1_PartialFilterExpression.htm)? – i3arnon

+1

@ i3amon你是對的!我的錯誤是在做var options = new CreateIndexOptions();無需設置泛型類型。 –