Можете да използвате комбинация от findOne()
и find()
курсорни методи заедно с родния JavaScript map
метод, за да получите първо идентификационния номер на екипа за конкретен потребител (който ще бъде масив от низове), след това използвайте функцията map, за да съпоставите масива на идентификационния номер на низ на екипите към масива на ObjectId и накрая да направите запитване до колекцията от екипи с получения масив като $in
операторен израз:
var teams = db.users.findOne({"name": "User1"}).teams;
var obj_ids = teams.map(function (item){ return ObjectId(item)});
db.teams.find({ "_id": { "$in": obj_ids } });
Изход :
/* 0 */
{
"_id" : ObjectId("5527a9493ebbe2452666c238"),
"name" : "Team 1"
}
/* 1 */
{
"_id" : ObjectId("5527b1be3371e3a827fa602c"),
"name" : "Team 2"
}