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" }] } })
Другие вопросы по тегам