MongoDB - фильтр по нескольким элементам массива - PullRequest
2 голосов
/ 16 марта 2019

Предположим, у меня есть такие документы:

{
    "_id", "1",
    "myarray": [
        {
           "address": "abc",
           "role": "input",
        }
        {
           "address": "def",
           "role": "output",
        }
    ]
},
{
    "_id", "2",
    "myarray": [
        {
           "address": "xyz",
           "role": "input",
        }
        {
           "address": "abc",
           "role": "output",
        }
    ]
}

Я хочу вернуть документы, где myarray.address равен abc и myarray.role выведен, но не документы, где существует myarray.address = 'abc'и существует myarray.role = 'output', но в документах, где существует элемент массива myarray:

address: "abc",
role: "output"

Используя приведенный выше пример, я хочу только документ с _id = 2.

1 Ответ

2 голосов
/ 16 марта 2019

Вы можете использовать $elemMatch оператор запроса для сопоставления нескольких полей в массиве

db.collection.find({ myArray: { $elemMatch: { address: 'abc', role: 'output' }}})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...