sql >> Databáze >  >> NoSQL >> MongoDB

Efektivní stránkování agregace MongoDB?

V MongoDB kurzorových metodách (tj. při použití find() ) jako limit , sort , skip lze aplikovat v libovolném pořadí => na pořadí nezáleží. find() vrátí kurzor, na který byly provedeny úpravy. Řazení se provádí vždy před limitem, přeskočení se provádí také před limitem. Takže jinými slovy pořadí je:seřadit -> přeskočit -> omezit .

Agregační framework nevrací DB kurzor. Místo toho vrátí dokument s výsledky agregace. Funguje tak, že vytváří mezivýsledky v každém kroku potrubí, a proto na pořadí operací opravdu záleží.

Myslím, že MongoDB nepodporuje pořadí metod modifikátoru kurzoru kvůli způsobu, jakým je interně implementován.

Na výsledku agregačního rámce nemůžete stránkovat, protože existuje jediný dokument pouze s výsledky. Stále můžete stránkovat na běžném dotazu pomocí přeskočení a omezení, ale lepším postupem by bylo použít rozsahový dotaz kvůli jeho efektivitě použití indexu.

AKTUALIZACE:

Od verze 2.6 agregační rámec Mongo vrací kurzor namísto jednoho dokumentu. Porovnat:v2.4 a v2.6 .



  1. Připojení k MongoDB Atlas pomocí Golang mgo:Trvalý nedostupný server pro sadu replik

  2. MongoDB:Nepodařilo se nastavit zásuvky během spouštění

  3. SQL pohled v mongodb

  4. Použití MongoDB jako zdroje dat v GoLang