.distinct()
フィールドの個別の値を取得するだけでうまく機能します。実際に発生数を取得するには、これは集計フレームワークに適しています。
Collection.aggregate([
{ "$group": {
"_id": "$field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
また、.distinct()
メソッドは、指定された「distinct」フィールドが実際に配列内にある場所から「abstract」を実行します。この場合、 $unwind
を呼び出す必要があります ここで最初に配列要素を処理します:
Collection.aggregate([
{ "$unwind": "$array" },
{ "$group": {
"_id": "$array.field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
したがって、主な作業は基本的に $group
で行われます。 フィールド値を「グループ化」することで、「個別」と同じ意味になります。 $sum
はグループ化演算子であり、この場合は1
を合計するだけです。 そのコレクションのフィールドにその値が出現するたびに。