2013-02-27 9 views
35

Ich habe ein Prozess, der eine Liste von String MongoDB-IDs zurückgibt,Mongo, finden durch Liste von IDs

[512d5793abb900bf3e20d012, 512d5793abb900bf3e20d011] 

Und ich eine einzelne Abfrage zu Mongo feuern wollen, und die passenden Dokumente wieder in der gleichen Reihenfolge erhalten als die Liste.

Was ist die Shell-Notation, um dies zu tun?

Antwort

57

Nach dem Konvertieren der Zeichenfolgen in ObjectIds können Sie den Operator $in verwenden, um die Dokumente in der Liste abzurufen. Es gibt keine Abfrage-Notation, um die Dokumente in der Reihenfolge Ihrer Liste zurück zu bekommen, aber sehen Sie here für einige Möglichkeiten, damit umzugehen.

var ids = ['512d5793abb900bf3e20d012', '512d5793abb900bf3e20d011']; 
var obj_ids = ids.map(function(id) { return ObjectId(id); }); 
db.test.find({_id: {$in: obj_ids}}); 
0

Wenn Ihr endgültiger Zweck darin besteht, das Dokument mit der Reihenfolge aus Ihrer Pre-Get-ID-Liste zu erhalten, können Sie das Abfrageergebnis in ein Mapping konvertieren (ID als Schlüssel, Dokument als Wert) und dann die IDs-Liste durchlaufen Hol dir das Dokument.

+0

Ich bin nach der Abfrage, die die Ergebnisse zurückgibt ...? Codebeispiel würde sehr geschätzt werden. – Will

Verwandte Themen