2014-09-18 85 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}}})