Vous pouvez utiliser une combinaison de findOne()
et find()
méthodes de curseur avec le JavaScript natif map
pour obtenir d'abord les identifiants d'équipe d'un utilisateur spécifique (qui sera un tableau de chaînes), puis utilisez la fonction map pour mapper le tableau d'identifiants de chaîne des équipes sur un tableau d'ObjectId, et enfin interrogez la collection teams avec le tableau résultant en tant que $in
expression de l'opérateur :
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 } });
Sortie :
/* 0 */
{
"_id" : ObjectId("5527a9493ebbe2452666c238"),
"name" : "Team 1"
}
/* 1 */
{
"_id" : ObjectId("5527b1be3371e3a827fa602c"),
"name" : "Team 2"
}