MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Unterschied zwischen Aggregat ($match) und Find in MongoDB?

Warum wird die aggregierte Ausgabe nicht als DBCursor oder List zurückgegeben?

Das Aggregations-Framework wurde erstellt, um einfache Probleme zu lösen, die andernfalls eine Kartenreduzierung erfordern würden.

Dieses Framework wird häufig verwendet, um Daten zu berechnen, die die vollständige Datenbank als Eingabe und wenige Dokumente als Ausgabe benötigen.

Was ist der Unterschied zwischen dem $match-Operator, der in der Aggregatfunktion verwendet wird, und der regulären Suche in Mongodb?

Einer der Unterschiede ist, wie Sie bereits sagten, der Rückgabetyp. Die Ausgabe der Find-Operationen wird als DBCursor zurückgegeben .

Weitere Unterschiede:

  • Das Aggregationsergebnis muss kleiner als 16 MB sein. Wenn Sie Shards verwenden, müssen die vollständigen Daten an einem einzigen Punkt nach der ersten $group erfasst werden oder $sort .
  • $match Der einzige Zweck besteht darin, die Leistung der Aggregation zu verbessern, aber es hat einige andere Verwendungszwecke, z. B. die Verbesserung der Aggregationsleistung.

und warum können wir die zurückgegebenen Dokumente nicht zählen?

Sie können. Zählen Sie einfach die Anzahl der Elemente im resultierenden Array oder fügen Sie den folgenden Befehl am Ende der Pipe hinzu:

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

Warum erlaubt die Suchfunktion nicht das Umbenennen der Feldnamen wie die Aggregatfunktion?

MongoDB ist jung und Funktionen kommen noch. Vielleicht können wir das in einer zukünftigen Version tun. Das Umbenennen von Feldern ist bei der Aggregation kritischer als in finden .

BEARBEITEN (26.02.2014):

MongoDB 2.6-Aggregationsvorgänge geben einen Cursor zurück.

BEARBEITEN (09.04.2014):

MongoDB 2.6 wurde mit den vorhergesagten Aggregationsänderungen veröffentlicht.