如何在mongodb中的对象数组中查找数据

时间:2019-07-03 10:02:23

标签: mongodb node-modules

我在对象数组中找到并匹配_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
    }]
 }

使用mongo查询查找数据

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

不起作用

1 个答案:

答案 0 :(得分:0)

它对您不起作用的原因是因为您正在直接在阵列上运行查找操作。

查询数组中的内容时,可以使用$elemMatch获取包含匹配数组元素的整个文档

如果您需要自定义输出,则可以在数组字段的管道中使用$unwind操作进行聚合。

在您的收藏中尝试一下,了解它的作用

db.collectionName.aggregate([{
        $unwind:"$array"
    },{
        $match:{
            $and:[
                {"array.id":'your_id'},
                {"array.is_active":boolean}
            ]
        }
    }
])