MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongo Заявка за вложено поле в масив.

Бихте искали да използвате $elemMatch за това.

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

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

Можете също така да използвате нотацията с точки на mongodb и тя ще работи почти като вас, с изключение на:

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

Mongodb знае как да интерпретира това в случай genres е масив. Само имайте предвид, че заявката за нотация с точка е леко двусмислена, тъй като ще съответства и на name свойство в случай на genres свойството не е масив. Например този документ ще съответства на:

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

Във всички случаи можете да индексирате name свойство в genres масив и индексът ще се използва за справки.

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

https://docs.mongodb.com/manual/reference/ речник/#term-dot-notation

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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да внедря разрешения на ниво поле за MongoDB?

  2. Намиране и връщане на първия съответстващ поддокумент от масива (Meteor / Mongo)

  3. Mongo DB с C# - добавен документ независимо от транзакцията

  4. MongoDB - Сортиране на резултатите от заявка

  5. Филтрирайте по дата с помощта на idObject