sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb $in proti poli objektů pole namísto objektů pole

Musíte extrahovat pole „umístění“ ze vstupního pole a vložit je do $in :

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

Pro referenci zde přepíšu vaši otázku:

Mám sbírku, která obsahuje dokumenty, jako je tento:

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

Mám vstupní pole, které je definováno takto:

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

Nyní chci napsat dotaz, abych našel všechny dokumenty, které odpovídají poli „umístění“ v poli, které mám pro vstup.

Jak to mám udělat?

Zkoušel jsem:

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

Ale to se neshoduje.



  1. Redis scan count:Jak vynutit SCAN, aby vrátil všechny klíče odpovídající vzoru?

  2. Použití agregace k řazení v komplexním podmíněném v Mongodb

  3. mongoose – ObjectId, které odkazuje na dílčí dokument

  4. Jak připojit Mongodb Atlas k Springu