У меня есть коллекция MongoDB с документами, имеющими следующую форму:
"peopleList": [
{
"_id": "List 1 id",
"name": "List 1",
"people": [
{
"_id": "A Person id",
"name": "A Person",
"email": "person@email.com"
},
{
"_id": "Another Person id",
"name": "Another Person",
"email": "another.person@email.com"
},
],
},
{
"_id": "List 2 id",
"name": "List 2",
"people": [
{
"_id": "A Person id",
"name": "A Person",
"email": "person@email.com"
},
],
}
]
Как видите, один и тот же объект Person может появляться в нескольких списках.
Итак, я хочу чтобы получить все списки, которые данный человек является частью.
Например:
Passing _id: "A Person id" -> the query should return List 1 and List 2,
Passing _id: "Another Person id:" -> the query should return only List 1.
Я пробовал этот запрос:
await PeopleList.find({ people: { _id: 'A person id' } });
Но запрос возвратил пустой массив, даже 'Идентификатор человека' представляет собой документ во многих списках.
РЕДАКТИРОВАТЬ
Обмен ответом Фахада, правильный запрос:
await PeopleList.find({
people: { $elemMatch: { _id: mongoose.Types.ObjectId('A person id') }
}});