MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Interroger MongoDB pour plusieurs ObjectID dans Array

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