Come contare i documenti con il conteggio aggregato MongoDB

Come Contare I Documenti Con Il Conteggio Aggregato Mongodb



Come suggerisce il nome, l'aggregazione $count in MongoDB deve essere utilizzata per contare i record dei campi. Uno dei modi più diffusi per contare i record è utilizzare il metodo count(). Inoltre, alcuni operatori di aggregazione consentono di contare i record importati da una fase precedente della pipeline di aggregazione. All'interno di questa guida oggi discuteremo dell'aggregazione dei conteggi di MongoDB utilizzando esempi di codice.

Esempio 01

Per eseguire l'operazione $count sui campi di una raccolta di database in MongoDB, dobbiamo avere numerosi record. Pertanto, abbiamo creato una raccolta denominata 'Test' e vi abbiamo inserito 12 record contemporaneamente utilizzando la funzione insertMany(). Ora, i record di questa raccolta “Test” sono stati visualizzati sulla shell MongoDB tramite la query della funzione find(). Puoi vedere che ha un totale di tre campi:_id, nome e punteggio.

prova> db.Test.find({})







Ora, per applicare la fase $count su qualsiasi campo, dobbiamo utilizzare la funzione aggregata di MongoDB all’interno dell’istruzione “db”. La funzione di aggregazione è costituita dall'istruzione condizionale, che spesso utilizza l'operatore $match su un campo specifico, seguita da un nuovo campo che visualizza il conteggio totale ottenuto dal campo condizione specificato utilizzando l'operatore $count.



Nel nostro caso, abbiamo utilizzato l'operatore $match per cercare i record corrispondenti per il valore '60' nel campo punteggio, mentre l'operatore $count è stato utilizzato per contare il numero totale di record recuperati e visualizzarli sotto l'operatore nuovo campo denominato 'SameScore'. L'output di questa query ha mostrato un campo 'SameScore' con il valore '2' che indica che ci sono due record con il valore 'punteggio' '60' pari a 2 nella raccolta 'Test'.



db.Test.aggregate([ { $corrispondenza: { 'punto' : 60 } }, { $conteggio: 'Stesso punteggio' } ])

Puoi anche utilizzare l'aggregazione $count per contare i campi diversi dai numeri, come il campo 'nome' della raccolta Test. Abbiamo utilizzato l'aggregazione delle corrispondenze per cercare il record nella raccolta in cui il campo del nome ha il valore 'John'. L'aggregazione dei conteggi ha conteggiato correttamente il numero totale di record corrispondenti, ovvero 2.





db.Test.aggregate([ { $corrispondenza: { 'nome' : 'John' } }, { $conteggio: 'Stesso nome' } ])

Esempio 02

Aggiorniamo la query precedente e applichiamo un'altra condizione per ottenere record diversi. Questa volta, applicheremo l'aggregazione $match del campo punteggio per ottenere il conteggio totale dei record in cui il campo punteggio ha un valore inferiore a 30. L'aggregazione del conteggio conterà il numero totale di record e lo aggiungerà a un nuovo colonna 'Grado D'. L'output mostra il risultato '2' come numero di conteggio per il valore corrispondente.

db.Test.aggregate( [ { $match: { punteggio: { $lt: 30 } } }, { $conteggio: 'Grado D' }])

È inoltre possibile utilizzare l'aggregazione $count durante l'applicazione degli operatori logici per eseguire più di una condizione sui record del campo. Pertanto, al campo 'Punteggio' sono state applicate un totale di due condizioni utilizzando l'operatore $e: gte (maggiore o uguale a) e lte (minore e uguale a). Entrambe le condizioni devono essere vere per ottenere il risultato e contarne i record. Il conteggio totale mostra che ci sono cinque record con i criteri corrispondenti.



db.Test.aggregate( [ { $corrispondenza: { '$e' : [ { 'punto' : {$gte: 60 }}, { 'punto' : {$lte: 80 }} ] }},

{$conteggio: 'Grado B' }])

Esempio 03

Nelle illustrazioni precedenti, abbiamo utilizzato l'aggregazione dei conteggi per ottenere solo il numero di record corrispondenti per valori di campo particolari, ad esempio un punteggio o un nome specifico. Il metodo di aggregazione di MongoDB consente di ottenere il numero di conteggio di tutti i record contenenti valori duplicati nella raccolta.

Per questo, è necessario utilizzare l'aggregazione $group all'interno del comando della funzione aggregata, come di seguito. Il campo _id è stato utilizzato per specificare il campo “nome” su cui funzionerebbe l'aggregazione dei conteggi. Insieme a questo, il campo definito dall'utente NameCount utilizzerà l'aggregazione $count per contare diversi duplicati nel campo 'nome'.

L'output di questa query è stato visualizzato di seguito. Contiene i valori del campo 'nome' e il loro numero di conteggio all'interno del campo NameCount in base alle duplicazioni di valori, ad esempio Cillian che ha 4 duplicati e così via.

db.Test.aggregate([ { $gruppo: { _id: '$nome' , Conteggio nomi: { $conteggio: {} }, }, }, ])

Esempio 04

Possiamo anche utilizzare l'aggregazione dei conteggi sui record di campi nidificati per contare valori di campi particolari. Per approfondire questo, abbiamo creato una raccolta denominata 'Insegnante' e aggiunto il campo nidificato 'sub' e il campo di tipo array 'shift' al suo interno insieme ad altri campi: nome e retribuzione. La funzione find() ha visualizzato tutti e cinque i record di questa raccolta.

prova> db.Teacher.find({})

Ora abbiamo applicato la funzione aggregata contenente l'operatore di corrispondenza. Inoltre, l'operatore $e è stato applicato al sottocampo “math” del campo “sub”, che contiene due condizioni diverse. Il conteggio è stato quindi calcolato. L'output mostra che ci sono due record in cui i valori matematici del sottocampo sono maggiori di 10 e minori di 20.

db.Teacher.aggregate( [ { $corrispondenza: { '$e' : [ { 'sotto.matematica' : {$gte: 10 }}, { 'sotto.matematica' : {$lte: venti }} ] }}, { $conteggio: 'Grado A' }])

Esempio 05

Diamo un'occhiata all'ultimo esempio per illustrare l'uso della funzione count() questa volta invece dell'aggregazione dei conteggi. Pertanto, la funzione count() è stata applicata al campo di tipo array della raccolta 'Teacher', ovvero 'shift'. Utilizzando gli indici per il campo array utilizzando l'indice 2, abbiamo specificato il criterio di corrispondenza come 'notte'. Viene restituito '2' come numero totale di conteggi per la voce 'notte'.

db.Teacher.count({ 'shift.2' : 'notte' })

In modo molto simile, la funzione count() può essere applicata anche ai campi nidificati, come il sottocampo “phy” del campo “sub” della raccolta “Teacher”. Abbiamo specificato i criteri di corrispondenza utilizzando l'operatore “lte” indicando valori inferiori a 14 nel sottocampo “phy”. L'output di questa istruzione ha visualizzato '2', ovvero 4 record con un valore inferiore a 14.

db.Teacher.count( { 'sub.phy' : { $lte: 14 } })

Conclusione

Questa guida ha dimostrato ed elaborato l'utilizzo dell'aggregazione $count di MongoDB con diversi esempi di codice. Gli esempi includono l'implicazione dell'aggregazione dei conteggi per recuperare il numero del conteggio per record di valori specifici e tutti i record di campo attraverso le raccolte. Inoltre, include l'uso dell'aggregazione dei conteggi sui campi dell'array e sui campi incorporati (nidificati). Alla fine, è stato incluso l'esempio della funzione count() per fare la differenza tra l'uso dell'aggregazione dei conteggi e della funzione count.