Medie all'interno dei gruppi
Fa parte della sezione Database con MongoDB del percorso Node.js di Coddy. Lezione 22 di 29.
Un gruppo può calcolare diversi riepiloghi sugli stessi documenti in ingresso. L’espressione di raggruppamento sceglie quali record appartengono allo stesso gruppo; ogni accumulatore calcola un campo di output separato.
{$group: {
_id: '$team',
players: {$sum: 1},
averageScore: {$avg: '$score'}
}}Per due giocatori della stessa squadra che ottengono 8 e 12, players è 2 e averageScore è 10. '$score', racchiuso tra virgolette, legge il punteggio di ogni giocatore in ingresso. Applica la stessa idea agli anni di pubblicazione dei libri. Il nome del campo di output è a tua scelta; il riferimento al campo identifica i valori di cui calcolare la media.
Sfida
FacileQuesto è un piccolo progetto di esercitazione. La configurazione è già fornita; modifica solo exercise.js.
Raggruppa i libri per genere e restituisci _id, count e averageYear. Ordina l'output in ordine crescente per _id. Esegui: classic ha count 1 e averageYear 1815; scifi ha count 2 e averageYear 1972.
Provalo tu
export async function exercise(books) {
return await books
.aggregate([{ $group: { _id: '$genre', count: { $sum: 1 } } }, { $sort: { _id: 1 } }])
.toArray();
}
Tutte le lezioni di Database con MongoDB
1Documenti
Un libro come documentoRaccolte e databaseConnessione a MongoDBLettura dei documenti memorizzatiInserimento di documentiRicerca di un documentoRicerca tramite ObjectIdConfronto tra numeriFiltri di queryScelta dei campi restituitiOrdinamento dei risultati della queryMantenere i primi risultatiProiezione, ordinamento e limite3Aggregazione
Conteggio dei documentiUna pipeline di fasiRaggruppare con $groupMedie all'interno dei gruppiFiltrare i risultati dei gruppiPipeline di aggregazioneUnire con $lookupEsercitati da solo: Playground Express