Несколько выражений $ elemMatch для сопоставления значений массива с использованием $ all в MongoDB? - PullRequest
12 голосов
/ 22 марта 2012

В ответе на вопрос я нашел интересное решение для поиска значений массива с использованием $ elemMatch.

Если в нашей коллекции есть следующие документы:

{
    foo : [ { bar : "xy", baz : 1 },
            { bar : "a", baz : 10 } ]
},
{
    foo : [ { bar : "xy", baz : 5 },
            { bar : "b", baz : 50 } ]
}

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

db.test.find({
    foo : { "$all" : [ { "$elemMatch" : { bar : "xy", baz : 1} }, { "$elemMatch" : { bar : "a", baz : 10 } } ] }
});

Я попробовал это с несколькими другими примерами, и это действительно работает. Но официальная документация для оператора $ all ничего не говорит о комбинировании этих двух запросов.

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

1 Ответ

6 голосов
/ 22 марта 2012

Это предполагаемое поведение.Документация не охватывает этот вариант использования, и мы работаем над этим, чтобы сделать его лучше.Однако трудно документировать каждую возможную комбинацию запросов.

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