mongodb поиск по объектам json внутри другого объекта json - PullRequest
0 голосов
/ 16 мая 2018

Рассмотрим этот документ:

{
 "id":1,
 "name":"A",
 "lastName":"AA",
 "friends":{
   "f1":{"name":"X", "lastName":"XX"},
   "f2":{"name":"Y", "lastName":"YY"}
  }
}

Я хотел бы найти друга с именем «Y», но не зная, что ключ «f2» ... ключ может быть любым.Я знаю, что могу установить «друзья» в качестве массива, но я не хочу этого делать.

1 Ответ

0 голосов
/ 16 мая 2018

Вот, пожалуйста:

db.collection.aggregate({
    $addFields: {
        "friends": {
            $arrayToObject: { // transform the array of key-value pairs back into a subdocument
                $filter: {
                    input: {
                        $objectToArray: "$friends" // transform the "friends" subdocument into an array of key-value pairs
                    },
                    as: "this",
                    cond: {
                        $eq: [ "$$this.v.name", "Y" ] // we only want the ones where the name is "Y"
                    }
                }
            }
        }
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...