首页 > 解决方案 > MongoDb:查询数组字段

问题描述

reference收集了这个对象:

> db.reference.find().pretty();
{
    "_id" : "Ref1",
    "metadata" : {
        "values" : [
            {
                "hola" : "adeu"
            },
            {
                "departament" : [
                    {
                        "ambit" : "just",
                        "name" : "ts"
                    }
                ]
            }
        ]
    },
    "timestamp" : ISODate("2018-09-22T08:37:08.989Z"),
    "_class" : "com.Reference"
}

我需要获取metadata.values有对象的文档{hola: "adeu"}

我试过没有任何运气:

> db.reference.find({metadata: {values: {hola: "adeu"}}});
> db.reference.find({metadata: {values: [{hola: "adeu"}]}});

有任何想法吗?

标签: mongodbmongodb-query

解决方案


你可以这样做:

db.getCollection('reference').find({"metadata.values" : { "$in" : [{"hola" : "adeu"}] }});

当您想要单个对象时,您也可以像这样执行 elemMatch:

db.getCollection('reference').find({"metadata.values" : { "$elemMatch" : {"hola" : "adeu"} }})

推荐阅读