sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb $in mot ett fält av objekt i array istället för objekt i array

Du måste extrahera "plats"-fälten från din inmatningsmatris och mata dem till $in :

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

Som referens här kommer jag att skriva om din fråga åt dig:

Jag har en samling som innehåller dokument som detta:

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

Det jag har är en inmatningsmatris som är definierad så här:

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

Nu vill jag skriva en fråga för att hitta alla dokument som matchar "plats"-fältet i arrayen jag har för inmatning.

Hur gör jag det?

Jag har försökt:

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

Men det stämmer inte.



  1. Hur tar man bort en modell från mongoose?

  2. Alternativ useFindAndModify stöds inte

  3. Hur torkar man Heroku Redis?

  4. Fråga efter en array inuti ett mangustdokument