Je zou een combinatie kunnen gebruiken van mongodb's findOne()
en find()
cursormethoden samen met de native JavaScript map
methode om eerst de team-ID's voor een specifieke gebruiker te krijgen (wat een tekenreeksarray zal zijn), gebruik vervolgens de kaartfunctie om de reeks van de tekenreeks-ID's van het team toe te wijzen aan de array van een ObjectId, en ten slotte de teamsverzameling op te vragen met de resulterende array als de $in
operatoruitdrukking:
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 } });
Uitvoer :
/* 0 */
{
"_id" : ObjectId("5527a9493ebbe2452666c238"),
"name" : "Team 1"
}
/* 1 */
{
"_id" : ObjectId("5527b1be3371e3a827fa602c"),
"name" : "Team 2"
}