MongoDB $ elemMatch Index - PullRequest
       18

MongoDB $ elemMatch Index

2 голосов
/ 01 февраля 2011

У меня есть запрос на монго, который выглядит следующим образом:

{'schedule': {'$elemMatch': {'time': {'$gt': start, '$lte': end}}}}

, который ищет в коллекции элемент, чье поле «расписание» (список объектов), которое содержит элемент, чье «время»"поле находится между началом и концом.

Мне неясно, как индексы mongo справляются с этой ситуацией, и задаюсь вопросом, что было бы наилучшей практикой, если бы этот запрос происходил регулярно?

1 Ответ

0 голосов
/ 01 февраля 2011

Это неправильный синтаксис, но должен работать.$ elemMatch используется, когда в объекте есть несколько полей (особенно в массиве), которые вы хотите сопоставить.С одним полем нет необходимости в $ elemMatch.

Вы должны сделать это:

{"schedule.time" : { $gt: <start>, $lte: <end> }}

Гораздо более понятно, что вы используете одинполе, даже если оно будет в нескольких элементах массива, в этом случае.Индекс «schedule.time» может использоваться для этого запроса, чтобы сделать его более эффективным.

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