Совпадение по свойству объекта в массиве - PullRequest
0 голосов
/ 11 мая 2018

Вот моя структура для одного объекта в моей коллекции:

{
  name: foo
  my_list: [
    {a:32, b:23},
    {a:12, b:31}
  ]
}  

Я хотел бы получить объекты, где b из последнего элемента вmy_list соответствует определенному значению.Я пробовал с $project и $arrayElemAt, но я не хочу менять структуру объекта при его возврате.

1 Ответ

0 голосов
/ 11 мая 2018
db.collection.aggregate(

    // Pipeline
    [
        // Stage 1
        {
            $project: {
                my_list: {
                    $slice: ["$my_list", -1, 1]
                },
                name: 1
            }
        },

        // Stage 2
        {
            $match: {
                'my_list.b': 31.0
            }
        },

    ]



);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...