Wie in den Kommentaren erwähnt, ist Ihr array
Variable ein Array von Hex-String ex :["57f36e94517f72bc09ee761e"]
Werte und für Mongo Shell, müssen Sie zuerst die String-Werte ObjectId
s gegossen. Verwenden Sie die JavaScript-Methode map()
, um das Casting in einer Liste durchzuführen.
Zum Beispiel:
Mongo Mantel
var array = ["585808969e39db5196444c07", "585808969e39db5196444c06"];
var ids = array.map(function(id){ return ObjectId(id); });
die Sie dann Abfrage der Aggregatfunktion wie in den folgenden
Die oben
db.collection.aggregate([
{ "$match": { "_id": { "$in" : ids } } }
])
Verwendung ist im Wesentlichen der gleiche wie
db.collection.find({ "_id": { "$in": ids } })
Node.js
var {ObjectId} = require('mongodb'); // or ObjectID
var ids = array.map(id => ObjectId.isValid(id) ? new ObjectId(id) : null;);
Sie Klammern fehlen. Die korrekte Syntax lautet collection.aggregate ([{$ match: {'_id': {$ in: array}}}]). Weitere Informationen finden Sie unter https://docs.mongodb.com/v3.2/aggregation/ – felix
Verwenden Sie stattdessen ObjectID-Werte. – Sammaye
funktioniert nicht mit [] – arunraj414