sql >> Database teknologi >  >> NoSQL >> MongoDB

forskel mellem aggregat ($match) og find, i MongoDB?

Hvorfor returnerer det samlede output ikke som en DBCursor eller en liste?

Aggregeringsrammen blev skabt for at løse nemme problemer, som ellers ville kræve kort-reducering.

Denne ramme bruges almindeligvis til at beregne data, der kræver den fulde db som input og få dokumenter som output.

Hvad er forskellen mellem $match-operatoren, der bruges i den samlede funktion, og det almindelige fund i Mongodb?

En af forskellene, som du sagde, er returtypen. Find operations output return som en DBCursor .

Andre forskelle:

  • Aggregeringsresultatet skal være under 16 MB. Hvis du bruger shards, skal de fulde data samles i et enkelt punkt efter den første $group eller $sort .
  • $match eneste formål er at forbedre aggregeringens kraft, men det har nogle andre anvendelser, såsom at forbedre aggregeringsydelsen.

og hvorfor kan vi ikke få en optælling af de dokumenter, der returneres?

Du kan. Bare tæl antallet af elementer i det resulterende array, eller tilføj følgende kommando til slutningen af ​​røret:

{$group: {_id: null, count: {$sum: 1}}}

Hvorfor tillader find-funktionen ikke at omdøbe feltnavnene som den samlede funktion?

MongoDB er ung og funktioner kommer stadig. Måske vil vi i en fremtidig version kunne gøre det. At omdøbe felter er mere kritisk i aggregering end i find .

REDIGERING (2014/02/26):

MongoDB 2.6 aggregeringsoperationer vil returnere en markør.

REDIGERING (2014/04/09):

MongoDB 2.6 blev udgivet med de forudsagte aggregeringsændringer.



  1. Sådan vælger du den bedste MongoDB-hosting til din virksomhed

  2. Deling af en sessionsbutik på Redis for en Django- og en Express.js-applikation

  3. Sådan får du klienten til at downloade en meget stor fil, der genereres i farten

  4. Tips til at køre MongoDB i produktion ved hjælp af Change Streams