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

mongodb - $lookup тръбопровод, използващ COLLSCAN вместо индекс

Сканирането на колекцията във вашия резултат за обяснение се отнася до map_levels колекция, както е отбелязано в queryPlanner.namespace стойност. $lookup етап обединява данни от друга колекция в текущия конвейер. Тъй като не сте посочили никакви етапи на заявка преди $lookup , map_levels колекцията ще бъде повторена с помощта на сканиране на колекция. Ако се зарежда цяла колекция без каквито и да било критерии за филтриране или сортиране, сканирането на колекцията има по-малко разходи от итерирането на индекс и извличането на документите.

Можете да избегнете сканирането на текущата колекция, като добавите $match етап преди вашия $lookup (ако приемем, че не искате да обработвате пълните map_levels колекция).

За съжаление резултатът от обяснението на заявката не показва (както при MongoDB 4.0) използването на индекс за $lookup етапи. Заобиколно решение за това би било стартирането на обяснение с помощта на pipeline на вашето търсене като заявка за агрегиране от най-високо ниво.

Има подходящ проблем за гледане/гласуване в полза на MongoDB инструмента за проследяване на проблеми:SERVER-22622:Подобрете $lookup обясни, за да посочи план на заявката в колекцията "от" .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apache-Nifi :Изтриване на колекции MongoDB

  2. Разлики в MongoDB между NumberLong и просто Integer?

  3. Елемент на MongoDB Update Array

  4. Как да внедря заявка за филтър за търсене с помощта на mongodb?

  5. Това безопасен начин ли е за вмъкване и актуализиране на масив от обекти в mongodb?