Какой самый быстрый способ проверить наличие документа mongodb? - PullRequest
1 голос
/ 28 сентября 2011

Какой самый быстрый способ проверить наличие документа mongodb?

Должен ли я просто использовать поиск, и если он ничего не возвращает?

РЕДАКТИРОВАТЬ:

collection.findOne {#attribute}, (err, doc) ->

    if err then console.log err

    if interaction
        #exists
    else
        #does not

Ответы [ 3 ]

3 голосов
/ 28 сентября 2011

Если вы просто тестируете один документ, используйте findOne (или эквивалент в вашем драйвере); большинство драйверов реализуют это наиболее эффективным способом (путем установки отрицательного предела 1 в запросе, который просит mongo немедленно вернуться после поиска одного документа, даже если может совпадать больше, и не создавать курсор, который никогда не будет использоваться клиентом).

Если у вас есть индекс, который может обслуживать ваш запрос, вы можете использовать field selection для выбора (подмножество) полей в индексе; это позволит использовать функциональность Mongo «покрытый индекс», чтобы избежать поиска базовых данных коллекции. Обязательно установите {_id: 0} в вашем селекторе полей, если _id не находится в вашем индексе.

0 голосов
/ 07 февраля 2012

http://www.mongodb.org/display/DOCS/mongo%20wire%20protocol#MongoWireProtocol-OPQUERY

numberToReturn: ограничивает количество документов в первом сообщении CONTRIB: OP_REPLY запросом. Тем не менее, база данных все равно установит курсор и вернет идентификатор курсора клиенту, если будет больше результатов, чем numberToReturn. Если драйвер клиента предлагает функцию «ограничения» (например, ключевое слово SQL LIMIT), то драйвер клиента должен гарантировать, что вызывающему приложению будет возвращено не более указанного количества документов. Если numberToReturn равно 0, дБ будет использовать размер по умолчанию. Если число отрицательное, то база данных вернет это число и закроет курсор. Никакие дальнейшие результаты для этого запроса не могут быть получены. Если numberToReturn равно 1, сервер будет обрабатывать его как -1 (автоматическое закрытие курсора).

0 голосов
/ 28 сентября 2011

Покрываемый индекс - это то, что вы хотите. Если информация, которую вы знаете о документе, проиндексирована, то вы можете использовать эту возможность для запроса и извлечения информации только из индекса (в ОЗУ) и не перейдете на диск для получения справочного документа. Объясняется в документации по монго здесь .

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