Мой документ Users содержит следующие данные:
{ "name" : "Plantation",
"image" : "1535695444692.jpg",
"type" : "csr",
"user_id" : ObjectId("5b7d598e86acd5b4171a2587"),
"joining" : [
{
"csr" : ObjectId("5b8a923f3284ca8451980a43"),
"volunteer" : ObjectId("5b891c4805540dfc0d541f72"),
"joined" : false
},
{
"csr" : ObjectId("5b8a923f3284ca8451980a43"),
"volunteer" : ObjectId("5b891c4805540dfc0d541f73"),
"joined" : true
}
]
}
Я хочу применить фильтр только к вложенному документу joining
, где csr id
равен "5b8a923f3284ca8451980a43" , если эти условия были выполнены, тогда вложенный документ joining
должен содержать все соответствующие данные, в противном случае joining
Поддокумент может быть пустым. Я также хочу заполнить данные joining.volunteer
.
Я использовал следующий код, но он вернул только первый соответствующий поддокумент.
Users.findOne({ _id: req.params.id },{'joining':{$elemMatch:{csr:'5b7d598e86acd5b4171a2587'}}}).populate('joining.volunteer').then(function (opportunity) {
return res.json({ opportunity: opportunity });
}).catch(next);