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

differenza tra aggregate ($match) e trova, in MongoDB?

Perché l'output aggregato non viene restituito come DBCursor o List?

Il framework di aggregazione è stato creato per risolvere semplici problemi che altrimenti richiederebbero la riduzione della mappa.

Questo framework è comunemente usato per calcolare dati che richiedono l'intero db come input e pochi documenti come output.

Qual è la differenza tra l'operatore $match utilizzato all'interno della funzione di aggregazione e il normale find in Mongodb?

Una delle differenze, come hai affermato, è il tipo di restituzione. L'output delle operazioni di ricerca viene restituito come DBCursor .

Altre differenze:

  • Il risultato dell'aggregazione deve essere inferiore a 16 MB. Se stai usando shard, i dati completi devono essere raccolti in un unico punto dopo il primo $group o $sort .
  • $corrispondenza l'unico scopo è migliorare il potere di aggregazione, ma ha altri usi, come migliorare le prestazioni di aggregazione.

e anche perché non riusciamo a contare i documenti che vengono restituiti?

Puoi. Basta contare il numero di elementi nell'array risultante o aggiungere il seguente comando alla fine della pipe:

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

Perché la funzione trova non consente di rinominare i nomi dei campi come la funzione di aggregazione?

MongoDB è giovane e le funzionalità sono ancora in arrivo. Forse in una versione futura saremo in grado di farlo. La ridenominazione dei campi è più critica in aggregazione che in trova .

MODIFICA (26/02/2014):

Le operazioni di aggregazione di MongoDB 2.6 restituiranno un cursore.

MODIFICA (09/04/2014):

MongoDB 2.6 è stato rilasciato con le modifiche all'aggregazione previste.