MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb $in gegen ein Feld von Array-Objekten anstelle von Array-Objekten

Sie müssen die "location"-Felder aus Ihrem Eingabearray extrahieren und sie an $in füttern :

var locs = arr.map(function(x) { return x.location } );
db.collection.find({ "fieldx": { "$in": locs } })

Als Referenz hier werde ich Ihre Frage für Sie umschreiben:

Ich habe eine Sammlung, die Dokumente wie diese enthält:

{ "fieldx": "NY" }
{ "fieldx": "LA" }
{ "fieldx": "SF" }

Was ich habe, ist ein Eingabearray, das wie folgt definiert ist:

var arr = [
    { "name": "foo", "location": "NY"},
    { "name": "bar", "location": "LA"},
    { "name": "foobar", "location": "NZ"}
];

Jetzt möchte ich eine Abfrage schreiben, um alle Dokumente zu finden, die mit dem Feld "Ort" in dem Array übereinstimmen, das ich für die Eingabe habe.

Wie mache ich das?

Ich habe versucht:

db.collection.find({ "fieldx": { "$in": arr } })

Aber das passt nicht zusammen.