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

MongoDB:forEach срещу fetch + each

Двата израза правят основно едно и също нещо на основно ниво на API, което е получаване на курсора и преобразуване на резултатите. Има обаче една „основна“ разлика относно производителността:

  • .forEach() ще преобразува резултатите от курсора "един по един" и ще обработи предоставената функция на итератора.

  • .fetch() от друга страна получава "масива" от курсора "всички наведнъж", което означава, че всичко е "в паметта" с едно посещение.

Така че, независимо от всичко, нито един от тях всъщност не е "по-бърз" при извършване на "основната" операция на извличане от курсора на заявката. Въпреки това, неоценяването на "израз" при всяка итерация на курсора "може да бъде" малко по-бързо, така че .fetch() може да спечели "малко" тук.

Големият голям улов, разбира се, е „всичко вече е в паметта“, така че има „режийни“ разходи за това, които трябва да вземете предвид. Също така, по време на .fetch() _.each() тепърва ще се обработва, така че както се казва. „Това, което „печелите“ от люлките, вероятно ще „загубите“ на кръговите кръстовища“ .

Без пълен сравнителен анализ на конкретни случаи, „времената“ вероятно ще бъдат подобни. А общият бенчмаркинг е почти безполезен, освен ако не прилага конкретно размера на наборите от данни, с които работите.

Следователно излиза общият случай, „Приблизително същото“ , но използвайки .fetch() ще изразходва повече памет отколкото просто итериране на курсор от самото начало.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Сортирайте по множество полета заедно в mongodb

  2. Преобразувайте масив от обекти MongoId в масив от низове

  3. Изграждане на MongoDB C драйвер в Windows

  4. Заявката Mongoose/mongoDB се присъединява.. но идвам от sql фон

  5. Извикване на съхранена функция в mongodb