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

Mongo Dotaz na vnořené pole v poli.

Budete chtít použít $elemMatch za to.

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

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

Můžete také použít tečkovou notaci mongodb a bude to do značné míry fungovat jako vy, kromě:

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

Mongodb ví, jak to interpretovat v případě genres je pole. Jen mějte na paměti, že dotaz na tečkovou notaci je mírně nejednoznačný, protože bude také odpovídat name vlastnost v případě genres vlastnost není pole. Tento dokument by například odpovídal:

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

Ve všech případech můžete indexovat name vlastnost v genres pole a index by se použil pro vyhledávání.

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

https://docs.mongodb.com/manual/reference/ glosář/#term-dot-notation

https://docs.mongodb.com/manual/reference/operator/ dotaz/v/




  1. MongoDB v2.4.9 řazení podle booleovských polí

  2. Jak mohu použít operátor „Nelíbí se mi“ v MongoDB

  3. jak porovnat dvě pole v dokumentu v agregaci potrubí (mongoDB)

  4. Zobrazuje se chyba, chyba:nelze se připojit k serveru 127.0.0.1 shell/mongo.js &při pokusu o spuštění mongodb na mac osx lion