【问题标题】:how to find data in array of object in mongodb如何在mongodb的对象数组中查找数据
【发布时间】:2019-11-13 23:51:52
【问题描述】:

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

不工作

【问题讨论】:

    标签: mongodb node-modules


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 但我们需要找到操作,因为我们正在创建虚拟填充,因此无法聚合
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    相关资源
    最近更新 更多