Aggregate

Le funzioni di aggregazione (aggregate)

19. Visualizzare il numero di corsisti di sesso maschile e di sesso femminile($group)

db.esiti.aggregate([{$group:{_id:”$sesso”, totale:{$sum:1}}}])

20. Visualizzare il corsista più anziano per genere ($group)

db.esiti.aggregate([{$group:{_id:”$sesso”, Età : {$max:”$eta”}}}])

21. Visualizziamo l’età media ($group-$avg)

db.esiti.aggregate([{$group:{_id:null,etamedia:{$avg: “$eta”}}}])

22. Visualizzare l’età media suddivisa per sesso ($group-$avg)

db.esiti.aggregate([{$group:{_id:”$sesso” ,etamedia:{$avg: “$eta”}}}])

23. Ordinamento crescente e decrescente dei corsisti per cognome e nome ($sort)

  • Crescente

db.esiti.aggregate([{ $sort : { cognome : 1, nome : 1}} ])

o più elegantemente

db.esiti.aggregate([{ $sort : { cognome : 1, nome : 1}} ]).pretty()

  • Decrescente

db.esiti.aggregate([{ $sort : { cognome : -1, nome : -1}} ])

o più elegantemente

db.esiti.aggregate([{ $sort : { cognome : -1, nome : -1}} ]).pretty()

24. Visualizzare l’età media delle corsiste ($match-$group-$avg)

db.esiti.aggregate([{$match:{sesso:”F”}},{$group:{_id:null,etamedia:{$avg: “$eta”}}}])

25. Visualizzare l’età media dei corsisti che hanno sostenuto la prova di “pittura ad olio” ($match-$group-$avg)

db.esiti.aggregate([{$match:{“prove.tipo”:”pittura ad olio”}},{$group:{_id: null,media:{$avg: “$eta”}}}])

26. Visualizzare il voto medio, il massimo, il minimo e la somma riportato da ogni corsista

(a: $unwind-$group-$avg)

(b: $unwind-$group-$sum)

(c: $unwind-$group-$max)

(d: $unwind-$group-$min)

(e: $unwind-$group-$max-$min)

Viene utilizzato l’operatore $unwind per decostruire un elemento da un array in un documento e creare documenti di output separati per ogni elemento dell’array, mentre l’operatore $group raggruppa i documenti per _id.

a. db.esiti.aggregate([{“$unwind”:”$prove”},{“$group”:{“_id”:”$_id”,”Media dei voti”: {“$avg”:”$prove.voto”}}}])

b. db.esiti.aggregate([{“$unwind”:”$prove”},{“$group”:{“_id”:”$_id”,”Somma dei voti”: {“$sum”:”$prove.voto”}}}])

c. db.esiti.aggregate([{“$unwind”:”$prove”},{“$group”:{“_id”:”$_id”,”Voto massimo”: {“$max”:”$prove.voto”}}}])

d. db.esiti.aggregate([{“$unwind”:”$prove”},{“$group”:{“_id”:”$_id”,”Voto minimo”: {“$min”:”$prove.voto”}}}])

e anche in combinazione

e. db.esiti.aggregate([{“$unwind”:”$prove”},{“$group”:{“_id”:”$_id”,”Voto massimo”: {“$max”:”$prove.voto”},”Voto minimo”: {“$min”:”$prove.voto”}}}])

27. Visualizzare le prove sostenute dai corsisti con l’indicazione del cognome, del nome e del tipo di prova con il relativo voto ($unwind-$project)

db.esiti.aggregate([{$unwind:”$prove”},{$project: {_id:0,cognome:1,nome:1,”prove.tipo”:1,”prove.voto”:1}}])

28. Visualizzare il voto medio riportato dal corsista n.1 o dal corsista Simone Prati ($match-$unwind-$group-$avg)

L’operatore $match rappresenta la condizione sulla quale effettuare il raggruppamento dopo aver decostruito l’array prove con l’operatore $unwind

a. db.esiti.aggregate([{$match:{_id:1}},{“$unwind”:”$prove”},{“$group”:{“_id”:”$_id”,”Media dei voti”: {“$avg”:”$prove.voto”}}}])

b. db.esiti.aggregate([{$match:{nome: “simone”,cognome: “prati”}}, {“$unwind”:”$prove”},{“$group”:{“_id”:”$_id”,”Media dei voti”: {“$avg”:”$prove.voto”}}}])

29. Visualizzare il voto medio suddiviso per le prove ($unwind-$group-$avg)

db.esiti.aggregate([{$unwind:”$prove”},{$group:{_id: “$prove.tipo”,media:{$avg: “$prove.voto”}}}])

30. Visualizzare il voto medio suddiviso per le prove in ordine crescente sul voto medio ($unwind-$group-$avg-$sort)

db.esiti.aggregate([{$unwind:”$prove”},{$group:{_id: “$prove.tipo”,media:{$avg: “$prove.voto”}}},{$sort:{media:1}}])

31. Visualizzare il voto medio suddiviso per le prove in ordine decrescente sul tipo di prova ($unwind-$group-$avg-$sort)

db.esiti.aggregate([{$unwind:”$prove”},{$group:{_id: “$prove.tipo”,media:{$avg: “$prove.voto”}}},

{$sort:{_id:-1}}])

32. Visualizzare il voto medio delle corsiste ($match-$unwind-$group-$avg)

db.esiti.aggregate([{$match:{sesso:”F”}},{“$unwind”:”$prove”},{“$group”:{“_id”:”$_id”,”Media dei voti”: {“$avg”:”$prove.voto”}}}])

33. Visualizzare i documenti dei corsisti che hanno ottenuto una votazione maggiore o uguale a 8 almeno in una prova ($match-$elemMatch-$gte)

db.esiti.aggregate([{$match:{prove:{$elemMatch:{voto:{$gte:8}}}}}])

34. Volendo sapere quanti ne sono con riferimento alla n. 33 ($match-$elemMatch-$gte-$count)

db.esiti.aggregate([{$match:{prove:{$elemMatch:{voto:{$gte:8}}}}},{$count:”Numero Corsisti”}])

PHP Code Snippets Powered By : XYZScripts.com