MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongodb $in contro un campo di oggetti di array invece di oggetti di array

Devi estrarre i campi "posizione" dal tuo array di input e inviarli a $in :

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

Per riferimento qui riscrivo la tua domanda per te:

Ho una collezione che contiene documenti come questo:

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

Quello che ho è un array di input definito in questo modo:

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

Ora voglio scrivere una query per trovare tutti i documenti che corrispondono al campo "posizione" nell'array che ho per l'input.

Come faccio a farlo?

Ho provato:

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

Ma questo non corrisponde.