sql >> Databasteknik >  >> NoSQL >> MongoDB

skillnad mellan aggregat ($match) och fynd, i MongoDB?

Varför returneras inte den aggregerade utdata som en DBCursor eller en lista?

Aggregeringsramverket skapades för att lösa enkla problem som annars skulle kräva map-reduce.

Detta ramverk används vanligtvis för att beräkna data som kräver hela db som indata och få dokument som utdata.

Vad är skillnaden mellan operatorn $match som används i aggregatfunktionen och det vanliga fyndet i Mongodb?

En av skillnaderna, som du sa, är returtypen. Hitta operationsutdataretur som en DBCursor .

Andra skillnader:

  • Aggregationsresultatet måste vara mindre än 16 MB. Om du använder skärvor måste all data samlas in på en enda punkt efter den första $gruppen eller $sort .
  • $match enda syftet är att förbättra aggregeringens kraft, men det har vissa andra användningsområden, som att förbättra aggregeringsprestandan.

och varför kan vi inte få en räkning av de dokument som returneras?

Du kan. Räkna bara antalet element i den resulterande arrayen eller lägg till följande kommando i slutet av röret:

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

Varför tillåter inte sökfunktionen att döpa om fältnamnen som aggregatfunktionen?

MongoDB är ung och funktioner kommer fortfarande. Kanske kommer vi att kunna göra det i en framtida version. Att byta namn på fält är viktigare i aggregering än i hitta .

REDIGERA (2014/02/26):

MongoDB 2.6-aggregationsoperationer returnerar en markör.

REDIGERA (2014/04/09):

MongoDB 2.6 släpptes med de förväntade aggregeringsändringarna.



  1. Mongoose:Få hela listan över användare

  2. MongoDB Skriv oro:3 måste-känna varningar

  3. Introduktion till datalokalitet i Hadoop MapReduce

  4. Hur man skickar ObjectId från MongoDB i MVC.net