MongoDB: запрос вложенных массивов


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

У меня есть поле в документе, которое имеет вложенный массив следующим образом:

[tags] => Array ( 
       [0] => Array ( [_id] => 5271318ea7d63ba9a25045ad 
                      [name] => photo ) 
       [1] => Array ( [_id] => 526ffafba7d63ba9a25045a9 
                      [name] => beach ) 
       [2] => Array ( [_id] => 5271318ea7d63ba9a25045ac 
                      [name] => landscape ) 
)

Я ищу документы, которые имеют все требуемые идентификаторы тегов в поисковом запросе. У меня есть этот запрос, но он возвращает все документы, которые имеют любые идентификаторы.

{"tags":{"$elemMatch":{"_id":{"$in":["5271318ea7d63ba9a25045ad","526ffafba7d63ba9a25045a9"]}}}}

Если я изменю запрос с $in на $all, он не вернется что-нибудь.

Любая помощь будет признательна.

1 2

1 ответ:

Попробуйте это. Запросы, использующие $in и $all, работают не совсем одинаково.

{"tags": { $all: [
    {"$elemMatch": {"_id": "5271318ea7d63ba9a25045ad"}},
    {"$elemMatch": {"_id": "526ffafba7d63ba9a25045a9"}}]
}}

Вот пример