標準のSQLDBMSでは、これは次のクエリで実行されます。
SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct;
mongodbでは、これはグループ関数を使用して実行されますが、少し複雑です:
db.collection.group(
{key: { "type":true},
reduce: function(obj,prev) { prev.count += 1; },
initial: { count: 0 }
});
ここでは、キー「type」(したがって「true」)の値を返すようにdbに要求しています。各値について、指定されたreduce関数を使用して、見つかったレコードを集約します。ここでは、各レコードが表示される回数のカウントを更新しています。このクエリを実行すると、次のようになります。
[
{
"type" : "report",
"count" : 5
},
{
"type" : "memo",
"count" : 15
}
{
"type" : "research",
"count" : 3
}
]
これは注文されていないことに気付くでしょう。 mongodbのドキュメントでさえ、注文する最も簡単な方法はクライアント側で行うことだと言っています。
関連するドキュメントは、こちら です。 。