Mongoose / MongoDB — могу ли я найти документ, сопоставив массив идентификаторов, которые он содержит?

#mongodb #mongoose

#mongodb #mongoose

Вопрос:

У меня есть модель документа, которая содержит массив пользовательских объектов. Что я хочу сделать, так это вернуть документ, если этот массив содержит объект с определенным пользователем _id . Возможно ли это?

Что-то вроде

 {
  _id: 1
  name: 'Document with Array of User Ids'
  arrayOfUsers: [
   {
     name: 'John Doe',
     _id: 2
   },
   {
     name: 'Michael Scott',
     _id: 3
   }
 ]
}
  
  

А затем возвращает все документы, которые имеют _id значение 3 в arrayOfUsers

Спасибо!

Ответ №1:

Вы можете использовать точечную нотацию следующим образом:

https://mongoplayground.net/p/iu0f68D1vbL

 Model.find({
  "arrayOfUsers._id": 2
})
  

https://docs.mongodb.com/manual/tutorial/query-embedded-documents/#query-on-nested-field