Nehmen wir an, ich habe ein Modell namens User
. Ich habe ein Array mit Objekt-IDs.
Ich möchte alle Benutzerdatensätze abrufen, die sich mit dem Array von IDs überschneiden, die ich habe.
User.find({ records with IDS IN [3225, 623423, 6645345] }, function....
Sie müssen den Operator $ in verwenden
https://docs.mongodb.com/manual/reference/operator/query/in/#op._S_in
Zum Beispiel:
Users.find( { "fb" : { id: { $in : arrayOfIds } } }, callback );
Hier ist eine mongoosey-Methode, um den $ in-Operator zu verwenden.
User.find()
.where('fb.id')
.in([3225, 623423, 6645345])
.exec(function (err, records) {
//make magic happen
});
Ich finde die Punktnotation sehr praktisch für das Abfragen in Subdokumente.
User.where({ records: { $in: [3225, 623423, 6645345] } }, function ...
weitere Informationen hier: http://docs.mongodb.org/manual/reference/operator/query/
Arbeit für mich so
IDs=["5b00c4b56c7fb80918293dd9","5b00c4b56c7fb80918293dd7",...]
const users= await User.find({records:IDs})
IDs ist das Array von Objekt-IDs:
const ids = [
'4ed3ede8844f0f351100000c',
'4ed3f117a844e0471100000d',
'4ed3f18132f50c491100000e',
];
Mit Rückruf:
User.find().where('_id').in(ids).exec(callback);
Mit Async-Funktion:
records = await User.find().where('_id').in(ids).exec();