Sie könnten eine Kombination aus findOne()
und find()
Cursormethoden zusammen mit dem nativen JavaScript map
-Methode, um zuerst die Team-IDs für einen bestimmten Benutzer abzurufen (was ein String-Array sein wird), verwenden Sie dann die map-Funktion, um das Array der String-IDs der Teams einem Array einer ObjectId zuzuordnen, und fragen Sie schließlich die Teams-Sammlung mit dem resultierenden Array als ab $in
Operatorausdruck:
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 } });
Ausgabe :
/* 0 */
{
"_id" : ObjectId("5527a9493ebbe2452666c238"),
"name" : "Team 1"
}
/* 1 */
{
"_id" : ObjectId("5527b1be3371e3a827fa602c"),
"name" : "Team 2"
}