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

Изпълнението на Mongodb заявка отнема твърде много време

Има много неща, които трябва да направите, за да оптимизирате вашата заявка. Какво бих опитал:

  • Както Антъни Уинзлет каза в коментарите, използвайте колкото е възможно $match етап като първи етап. По този начин можете да намалите броя на документите, предавани на следващите етапи, и да използвате индекси.

  • Ако приемем, че използвате поне 3.6 mongo версия, променете етапите на търсене, като използвате синтаксиса „let/pipeline“ (вижте тук ). По този начин можете да интегрирате вашите „външни филтри“ („customer_info.status“:{$ne:9}, „model_info.status“:{$ne:9}) в етап $match във вашия конвейер за справки. С индекси в десните полета/колекции ще спечелите малко време/памет в етапите на $lookup.

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

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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Развиване на обработка за несъществуващ вграден документ

  2. Къде точно е изключението NullPointer?

  3. Къде трябва да добавя опцията --rest за MongoDB?

  4. Подреждане и таблично (уникално/броене) в Mongo

  5. MongoDB $stdDevPop