Монго подмножество запросов с индексацией. - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь оптимизировать для следующего варианта использования. Я хочу получить все документы, чье поле массива является подмножеством запрашивающего массива.

Ex. subset (['a', 'b', 'c']) => [{arr: ['a', 'b']}, {arr: ['c']}, {arr: ['a' , 'b', 'c']}]

Пока запрос $ not: {$ elemMatch: {$ nin: [arr]}} позволил мне достичь ожидаемого поведения. Этот запрос, однако, не использует индекс поля массива, который я выбрал, в результате каждый раз происходит полное сканирование коллекции. Я провел некоторое исследование, и, очевидно, $ elemMatch, которому предшествует $ not, приводит к тому, что индекс не используется. Есть ли другой способ воспроизвести мой запрос так, чтобы он использовал индекс? Этот запрос в настоящее время занимает почти целую секунду в 1M документов.

1 Ответ

0 голосов
/ 16 ноября 2018

Почему $ не используется с $ nin?Не хватит ли $ или [$ in с {$ exist: false}]?

Не могли бы вы предоставить свой индекс и статистику выполнения вашего запроса?ех.db..find ({}). объяснить ( 'executionStats')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...