2012-01-11 1 views
1

Par exemple, j'ai n documents:demande MongoDB par tableau de _ids (est-il possible?)

{ _id : 1 } 
{ _id : 2 } 
{ _id : 3 } 
... 
{ _id : n } 

par une logique que je suis arrivé tableau de m _ids: [1, 30, 500, 1001, ..., i];

Est-il possible de faire UNE requête en utilisant un tableau de _ids pour récupérer le curseur de ces documents m? Je ne veux pas faire des demandes séparées comme:

db.things.findOne({_id:1});

db.things.findOne({_id:30});

db.things.findOne({_id:500});

db.things.findOne({_id:1001});

...

db.things.findOne({_id:i});

Et si c'est possible, comment le faire sur JavaScript Shell et avec le pilote C# officiel?

Merci!

Répondre

8
c = db.things.find({_id:{$in:[1,30,500,1001,...,i]}}) 
+0

est Non seulement cela correct, il sera également très efficace. –

+0

Remon merci !!! :) – Edward83

+0

Vous êtes le bienvenu –

0

Et pour ce faire avec le C# Driver:

var documentIds = new BsonValue[] { ObjectId.Parse("id1"), ObjectId.Parse("id2")}; 
var query = Query.In("_id", documentIds); 
Questions connexes