MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Fragen Sie MongoDB nach mehreren ObjectIDs im Array ab

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"
}