2015-12-15 2 views
4

В последней версии MongoDB (v3.2) добавлена ​​поддержка partial (filtered) indexes. Вы создаете фильтр при создании индекса, и этот фильтр определяет, какие документы будут указаны в индексе, а какие нет.Каковы ограничения частичных индексов?

Могу ли я использовать какое-либо выражение фильтра (если это допустимый фильтр)? Или существуют ограничения на используемый фильтр? Если да, то каковы эти ограничения?

ответ

10

Могу ли я использовать какое-либо выражение фильтра?

Нет, частичные индексы поддерживают только подмножество операторов в используемом фильтре. Поддерживаются только операторы: (только на верхнем уровне), $EQ, $LT, $LTE, $GT, $GTE, $EXISTS и TYPE_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(); без установки родового типа. –

Смежные вопросы