sql >> Database >  >> NoSQL >> MongoDB

Mongodb $in tegen een veld van objecten van array in plaats van objecten van array

U moet de "locatie"-velden uit uw invoerarray extraheren en invoeren in $in :

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

Ter referentie hier ga ik uw vraag voor u herschrijven:

Ik heb een verzameling die documenten als deze bevat:

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

Wat ik heb is een invoerarray die als volgt is gedefinieerd:

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

Nu wil ik een query schrijven om alle documenten te vinden die overeenkomen met het veld "locatie" in de array die ik voor invoer heb.

Hoe doe ik dat?

Ik heb geprobeerd:

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

Maar dat komt niet overeen.



  1. Wat is het voordeel van Redis-clustering op verschillende hosts?

  2. PHP:Is het een slecht ontwerp om objecten te serialiseren en ze in de database te bewaren voor later?

  3. Hoe update/upsert ik een document in Mongoose?

  4. Converteer MongoDB BsonDocument naar geldige JSON in C#