首页 > 解决方案 > 如何在mongodb的对象数组中查找数据

问题描述

我在对象数组中找到并匹配 _id 和 is_active 两个键

前任

 {
    _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});

不工作

标签: mongodbnode-modules

解决方案


它不适合您的原因是因为您直接在阵列上运行查找操作。

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

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

在你的收藏上试试这个并了解它在做什么

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

推荐阅读