Mongo:查询数组中的对象

时间:2014-09-18 22:18:31

标签: mongodb mongodb-query

我尝试使用$in$elemMatch查询对象数组中匹配member_id字段的所有对象,但都没有返回数据。示例查询:

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

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

要在Mongo中查询的示例数据:

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

我做错了什么?

1 个答案:

答案 0 :(得分:2)

如果您想直接匹配member_id,可以使用:

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

或使用$in

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

或使用$elemMatch

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