Mens .distinct()
fungerer godt til blot at opnå de distinkte værdier for et felt, for faktisk at få tællinger af forekomster, dette er bedre egnet til aggregeringsrammen:
Collection.aggregate([
{ "$group": {
"_id": "$field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Også .distinct()
metoden "abstrakter" fra hvor det angivne "distinkte" felt faktisk er inden for en matrix. I dette tilfælde skal du ringe til $unwind
først til at behandle array-elementerne her:
Collection.aggregate([
{ "$unwind": "$array" },
{ "$group": {
"_id": "$array.field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Så hovedarbejdet udføres grundlæggende i $group
ved at "gruppere" på feltværdierne, hvilket betyder det samme som "særskilt". $sum
er en grupperingsoperator, som i dette tilfælde blot lægger 1
sammen for hver forekomst af den værdi i feltet for den pågældende samling.