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

MongoDB индексира поддокументи, които не се използват въз основа на синтаксиса на заявката

Мисля, че го разбрах, след като проверих документите на mongo. По принцип има разлика в семантиката между тези две. По същество в първата форма на заявката {c: {d: d1}} , mongo приема, че посочвате цялото поддокумент. Така че, ако имате поддокумент {c: {d: d1, e: e1}} , няма да съвпада.

OTOH, втората форма на заявката {'c.d': d1} означава, че посочвате съвпадение само в едно поле в поддокумента. Това ще съответства дори ако поддокументът има други полета или цели под-поддокументи.

Тази разлика се простира до индекса. _ensureIndex({c: 1}) и _ensureIndex({'c.d': 1}) са два различни индекса и въпреки че първият индексира целия поддокумент, той няма да бъде използван, ако правите заявка в отделно поле с c.d нотация.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor Simple Schema - Когато опцията за модификатор е вярна, валидиращият обект трябва да има поне един оператор

  2. Показване само на съвпадащи полета за текстово търсене в MongoDB

  3. mongoose агрегат, използващ $exists в $cond

  4. MongoDB Number Field няма да вмъкне или актуализира с номера, който въвеждам

  5. Има ли заобиколно решение, което да позволи използването на регулярен израз в тръбопровода за агрегиране на Mongodb