как найти данные в массиве объекта в mongodb - PullRequest
0 голосов
/ 03 июля 2019

Я нахожу в массиве объектов и сопоставить _id и is_active оба ключа

ex

 {
    _id:'12333333333333'
    name:'test',
    array:[{
        id:'1233449',
        is_active:true
    },{
        id:'7987979',
        is_active:false
    },{
        id:'9558555',
        is_active:true
    },{
        id:'2564654',
        is_active:false
    }]
 }

найти данные с помощью запроса монго

db.getCollection('demo').find({'array.id':'7987979','array.is_active':false});

не работает

1 Ответ

0 голосов
/ 03 июля 2019

Причина, по которой он не работает для вас, заключается в том, что вы выполняете операцию поиска непосредственно в массиве.

При запросе вещей в массиве вы можете использовать $elemMatch для получения всего документа , который содержит соответствующий элемент массива.

Если вам нужен пользовательский вывод, вы можете использовать Aggregation с операцией $unwind в конвейере в поле массива.

Попробуйте это в своей коллекции и поймите, что она делает

db.collectionName.aggregate([{
        $unwind:"$array"
    },{
        $match:{
            $and:[
                {"array.id":'your_id'},
                {"array.is_active":boolean}
            ]
        }
    }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...