Podría usar una combinación de findOne()
y find()
métodos de cursor junto con JavaScript nativo map
para obtener primero las identificaciones del equipo para un usuario específico (que será una matriz de cadenas), luego use la función de mapa para asignar la matriz de identificaciones de cadena de los equipos a una matriz de ObjectId, y finalmente consulte la colección de equipos con la matriz resultante como el $in
expresión del operador:
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 } });
Salida :
/* 0 */
{
"_id" : ObjectId("5527a9493ebbe2452666c238"),
"name" : "Team 1"
}
/* 1 */
{
"_id" : ObjectId("5527b1be3371e3a827fa602c"),
"name" : "Team 2"
}