alyx
alyx

Reputation: 2733

Mongo: querying for object inside array

I've tried using $in and $elemMatch to query for all objects matching member_id field within an object array, neither are returning data. Example queries:

db.events.find({"source_site":{"event_hosts":{$in:[{"member_id":12300113}]}}})

and

db.events.find({source_site:{event_hosts:{$elemMatch:{member_id:12300113}}}})

Sample data to query in Mongo:

{
    "_id" : ObjectId("541890c2660a17aa1f7b7bd4"),
    "source_site" : {
        "event_hosts" : [
            {
                "member_id" : 12300113,
                "member_name" : "Sal Corthen"
            },
            {
                "member_id" : 139930702,
                "member_name" : "Erin Morgen"
            }
        ]
    }
}

What am I doing wrong?

Upvotes: 0

Views: 92

Answers (1)

Anand Jayabalan
Anand Jayabalan

Reputation: 12904

If you want to match a member_id directly, you can use:

db.events.find({"source_site.event_hosts.member_id":12300113})

or using $in:

db.events.find({"source_site.event_hosts.member_id":{$in:[12300113]}})

or using $elemMatch:

db.events.find({"source_site.event_hosts":{$elemMatch:{"member_id":12300113}}})

Upvotes: 2

Related Questions