Ich habe ein Array von String wie folgt:
['57b69c9d4ae615ef0e312af6','57b69bf477b8e5cd0eb38c88'];
ich dies in ObjectId bin Umwandlung wie folgt:
var objectIds = [];
for(var i=0; i<expenseIds.length; i++){
var _id = new ObjectId(expenseIds[i]);
objectIds.push(_id);
}
objectIds:
[ 57b69c9d4ae615ef0e312af6, 57b69bf477b8e5cd0eb38c88 ]
Jetzt verwende ich $in
Abfrage in MongoDb, um alle Details wie folgt zu holen:
app.models.xxxxx.find({"_id" : {"$in" : objectIds}}, function(err, res){
if(err){
} else {
console.log(res);
}
});
Aber es filtert nicht. Alle Dokumente in der Sammlung xxxxx werden zurückgegeben .. Bitte teilen Sie Ihre Ideen. Danke im Voraus.
EDIT: wenn ich den Befehl in Mongo Shell ausgeführt wird:
db.xxx.find({ _id: { '$in': [ 57b69c9d4ae615ef0e312af6, 57b69bf477b8e5cd0eb38c88 ] }});
Es Fehler wirft:
SyntaxError: identifier starts immediately after numeric literal @(shell):1:35
Nun, zeigen Sie Ihre genaue Abfrage (die ausgeführt wird) und Dokumente in der Sammlung. Vielleicht wählt der Filter alle Dokumente aus. –
Wahrscheinlich gibt es ein Problem beim Konvertieren von String in 'ObjectId'. Hast du versucht, ohne "neues" Keyword zu konvertieren? –
Etwas außerhalb des Themas: Sie können auch [** '.map()' **] verwenden (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) als 'var objectIds = expensesIds.map (Funktion (id) {return new ObjectId (id);});' – chridam