Составные индексы для запроса OR + Sort в mongodb - PullRequest
5 голосов
/ 18 июля 2011

Для этого запроса ИЛИ:

db.messages.find({ $or: [ { to: { $ne: null }, from: "xyz" }, { to: "xyz" } ] }).sort({_id: -1}).limit(50)

со следующими индексами:

{to:1, from: 1, _id:-1} and {from:1, to:1, _id:-1}

Монго всегда выполняет полное сканирование.

Я надеялся, что Монго сможетиспользуйте эти два индекса и объедините результаты.

Нужно ли разделить это на два запроса (по одному для каждого предложения OR) и объединить себя?Или есть другой индекс, который может помочь?

1 Ответ

4 голосов
/ 18 июля 2011

Это известная проблема, https://jira.mongodb.org/browse/SERVER-1205,, за которую вы можете проголосовать, если она очень важна для вашего варианта использования.

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