MongoDB запрашивает вложенные поля документа одновременно
Наличие документа в коллекции test
следующим образом:
{a:2, list:[{lang:"en", value:"Mother"}, {lang:"de", value:"Mutter"}] }
Когда я запрашиваю:
db.test.find({"list.lang":"de", "list.value": "Mother" })
Я ожидаю ничего не получить, но по той причине, что существует документ с 2-мя вложенными записями, который удовлетворяет общему условию, которое разрешает MongoDB {a:2}
Как исправить запрос, чтобы получить только те документы, в которых оба внутренних поля удовлетворяют заданному условию одновременно?
1 ответ
Решение
С помощью $elemMatch
:
db.test.find({ "list": { "$elemMatch": {"lang":"de", "value": "Mother" } } })
С помощью $all
:
db.test.find({ "list": { "$all": [{"lang":"de", "value": "Mother" }] } })