Запрашивать вложенные документы в массиве родительского документа

#node.js #mongodb #mongoose #nested-queries #database

#mongoose

Вопрос:

db.animals

 {'animal':'monkey',
 'quantity:3
 'id' : 001}
{'animal':'pig',
 'quantity:5
 'id' : 002}
{'animal':'cow',
 'quantity:3
 'id' : 003}
  

db.people

 {'person':'john',
 'have':[001, 003]} // objectId
  

Как я могу получить animals of John?. Я ожидаю такого результата:

 [{'animal':'monkey',
 'quantity:3
 'id' : 001},
{'animal':'cow',
 'quantity:3
 'id' : 003}]
  

Ответ №1:

В MongoDB нет объединений, поэтому вам придется выполнить это в два этапа.

В командной оболочке:

 var john = db.people.findOne({person: 'john'})
db.animals.find({id: {$in: john.have}})