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

Mongo Forespørg på et indlejret felt i en matrix.

Du vil gerne bruge $elemMatch for dette.

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

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

Du kan også bruge mongodb-punktnotationen, og den vil stort set fungere som du ville, bortset fra:

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

Mongodb ved, hvordan man fortolker dette i tilfælde af genres er et array. Bare husk på, at forespørgslen med punktnotation er lidt tvetydig, da den også vil matche name egenskab i tilfælde af genres ejendom er ikke en matrix. For eksempel ville dette dokument matche:

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

I alle tilfælde kan du indeksere name egenskab i genres array og indekset ville blive brugt til opslagene.

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

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

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




  1. Skift dokumentstruktur i mongodb med mongo-skallen

  2. Hvordan kan jeg sikkert oprette forbindelse til Heroku-hostede Redis fra kommandolinjen?

  3. Node MongoDb { fejl:'forbindelse til [127.0.0.1:27017] fik timeout' }

  4. Guide til Upsert i MongoDB