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

Ужасно влошена производителност с други условия за присъединяване в $lookup (използване на конвейер)

Втората версия добавя изпълнение на тръбопровод за агрегиране за всеки документ в обединената колекция .

Документацията казва:

Конвейерът се изпълнява за всеки документ в колекцията, а не за всеки съответстващ документ.

В зависимост от това колко голяма е колекцията (както броя документи, така и размера на документа) това може да излезе за приличен период от време.

Има смисъл - всички допълнителни документи, дължащи се на премахването на ограничението, също трябва да имат изпълнена линия за агрегиране за тях.

Възможно е изпълнението на конвейер за агрегиране за всеки документ да не е толкова оптимизирано, колкото би могло да бъде. Например, ако конвейерът е настроен и съборен за всеки документ, лесно може да има повече режийни разходи в това отколкото в условията на $match.

Изпълнението на конвейер за агрегиране за съединен документ осигурява допълнителна гъвкавост. Ако имате нужда от тази гъвкавост, може да има смисъл да изпълните тръбопровода, въпреки че независимо от това трябва да се вземе предвид производителността. Ако не го направите, разумно е да използвате по-ефективен подход.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Достъп до база данни за производство на Meteor

  2. Как да конфигурирам индекси на mongoDB в django-nonrel, без да използвам модели?

  3. Mongoid w/ Rails, attr_accessible --> Не е намерен метод

  4. Уникалният индекс на MongoDB не работи

  5. Mongoose актуализира или вмъква много документи