2014-09-18 3 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}}}) 
Смежные вопросы