$ и запрос не возвращает результата - PullRequest
1 голос
/ 07 января 2012

Хорошо, этот убивает меня. Может быть, уже поздно, и я что-то забыл, но это должно сработать.

В тестовых целях у меня в коллекции около 6000 документов. Существует свойство с именем Priority, которое в каждом случае имеет значение 2.

Следующие два запроса возвращают все 6000 документов:

{
    Priority: {
        $gt: 1
    }
}

и

{
    Priority: {
        $lt: 10
    }
}

Этот запрос, однако, возвращает 0 результатов и, согласно объяснению, выполняет полное сканирование всех 6000 документов:

{
$and: [
        {
            Priority: {
                $gt: 1
            }
        },
        {
            Priority: {
                $lt: 10
            }
        }
    ]
}

Я что-то пропустил?

Ответы [ 2 ]

4 голосов
/ 07 января 2012

Если бы я сказал: «Мне нужен кто-то с автомобилем, который может вместить четырех человек, и автомобилем, который может вместить, по меньшей мере, восемь человек», то человек с единственной машиной, в которой сидели восемь человек, обычно не понимался бы как квалифицированный.Ваш запрос и может быть удовлетворен только записью с двумя значениями для Приоритета, одним меньше 10 и одним большим 1.

Документы для и имеют ссылку на семантику multikey mongoDB.

2 голосов
/ 07 января 2012

Вы не должны использовать $and здесь.

Вместо этого вы можете переписать ваш запрос следующим образом:

{Priority: {$gt: 1, $lt: 10}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...