Jordi
Jordi

Reputation: 23277

MongoDb: query on array field

I've this object on reference collection:

> 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"
}

I need to get document where metadata.values has an object {hola: "adeu"}.

I've tried without any luck:

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

Any ideas?

Upvotes: 0

Views: 41

Answers (1)

Ankit
Ankit

Reputation: 990

You can do something like this:

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

You can also do an elemMatch like this, when you want it for a single object:

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

Upvotes: 1

Related Questions