sql >> Databasteknik >  >> NoSQL >> MongoDB

Fråga MongoDB för flera ObjectIDs i Array

Du kan använda en kombination av mongodbs findOne() och find() markörmetoder tillsammans med det inbyggda JavaScript map metod för att först hämta team-id:n för en specifik användare (som kommer att vara en strängarray), använd sedan kartfunktionen för att mappa lagens sträng-id:s array till en ObjectIds array, och slutligen fråga teamsamlingen med den resulterande arrayen som $in operatoruttryck:

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

Utdata :

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

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



  1. Aggregate Query i Mongodb returnerar specifikt fält

  2. MongoDB-fråga:$nära med aggregering

  3. 'upsert' i ett inbäddat dokument

  4. Mongodb tidsstämpel är mycket felaktig - mangust