sql >> Database >  >> NoSQL >> MongoDB

Mongo Query een genest veld binnen een array.

U zou $elemMatch . willen gebruiken hiervoor.

{"genres": { "$elemMatch" :  {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" :  {"name": { "$in": ["Shooter"] } } } }

https://docs.mongodb.com/manual/reference/operator/ query/elemMatch/

Je zou ook de mongodb-puntnotatie kunnen gebruiken en het zal ongeveer werken zoals je zou doen, behalve:

{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}

Mongodb weet dit te interpreteren in het geval dat genres is een array. Houd er rekening mee dat de puntnotatie-query enigszins dubbelzinnig is, omdat deze ook overeenkomt met de name eigenschap in het geval dat de genres eigenschap is geen array. Dit document zou bijvoorbeeld overeenkomen met:

{"genres": { "name": "Shooter" } }

In alle gevallen kunt u de name . indexeren eigenschap in de genres array en de index zou worden gebruikt voor de zoekopdrachten.

db.collection.createIndex({'genres.name': 1})

https://docs.mongodb.com/manual/reference/ woordenlijst/#term-dot-notation

https://docs.mongodb.com/manual/reference/operator/ vraag/in/




  1. Mongoose/mongoDB-query voegt zich bij ... maar ik kom uit een sql-achtergrond

  2. Hoe kan ik de natuurlijke volgorde in MongoDB specificeren?

  3. fout TS2688:Kan typedefinitiebestand voor 'bson' niet vinden

  4. Hoe krijg je een uitleg voor een MongoDB-telling?