Proč se agregovaný výstup nevrací jako DBCursor nebo seznam?
Agregační rámec byl vytvořen k řešení jednoduchých problémů, které by jinak vyžadovaly redukci map.
Tento rámec se běžně používá k výpočtu dat, která vyžadují celou db jako vstup a málo dokumentů jako výstup.
Jaký je rozdíl mezi operátorem $match použitým uvnitř agregační funkce a běžným find v Mongodb?
Jedním z rozdílů, jak jste uvedl, je návratový typ. Najít návrat výstupu operací jako DBCursor .
Další rozdíly:
- Výsledek agregace musí být menší než 16 MB. Pokud používáte úlomky, musí být všechna data shromážděna v jednom bodě po první $skupině nebo $sort .
- $match jediným účelem je zlepšit výkon agregace, ale má i další využití, jako je zlepšení výkonu agregace.
a také proč nemůžeme získat počet dokumentů, které jsou vráceny?
Můžeš. Stačí spočítat počet prvků ve výsledném poli nebo přidat na konec roury následující příkaz:
{$group: {_id: null, count: {$sum: 1}}}
Proč funkce find neumožňuje přejmenování názvů polí jako agregační funkce?
MongoDB je mladý a funkce stále přicházejí. Možná to budeme moci udělat v budoucí verzi. Přejmenování polí je při agregaci důležitější než v najít .
UPRAVIT (26. 2. 2014):
Operace agregace MongoDB 2.6 vrátí kurzor.
UPRAVIT (2014/04/09):
MongoDB 2.6 byl vydán s předpokládanými změnami agregace.