2014-09-18 74 views
0

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

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

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

的样本数据中蒙戈查询:

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

我在做什么错?

回答

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