MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Interroga MongoDB per più ObjectID in Array

È possibile utilizzare una combinazione di findOne() e find() cursor metodi insieme al JavaScript nativo map metodo per ottenere prima gli ID del team per un utente specifico (che sarà un array di stringhe), quindi utilizzare la funzione map per mappare l'array dell'ID di stringa dei team su un array di ObjectId e infine interrogare la raccolta dei team con l'array risultante come $in espressione dell'operatore:

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 } });

Risultato :

/* 0 */
{
    "_id" : ObjectId("5527a9493ebbe2452666c238"),
    "name" : "Team 1"
}

/* 1 */
{
    "_id" : ObjectId("5527b1be3371e3a827fa602c"),
    "name" : "Team 2"
}