2

MongoDB コレクションがあり、SQL の GROUP BY および COUNT 関数のように、フィールド内の個別の値と、各値の発生回数を見つける必要があります。

例えば

Item name ------ count

Soap ----------- 7
Apples --------- 4
Tin Foil ------- 5

私は MongoDB を初めて使用し、これに役立つドキュメントを実際に見つけることができませんでした。これまでのところ、個別の値のリストを返すことはできましたが、それぞれの数を返すことはできませんでした。

Java MongoDB ライブラリを介してこれを行う必要があります。

4

3 に答える 3

2
db.item.aggregate([
{
    $group: {
        _id: "$name",
        count: {
            "$sum": 1
        }
    }
},
{
    $project: {
        _id: 0,
        name: "$_id",
        count: 1
    }
}
]).pretty();

Java実装はこのようになります

    final MongoClient mongoClient = new MongoClient();
    final DB db = mongoClient.getDB("DB_NAME");
    final DBCollection collection = db.getCollection("item");

    final DBObject groupIdFields = new BasicDBObject("_id", "$name");

    groupIdFields.put("count", new BasicDBObject("$sum", 1));
    final DBObject group = new BasicDBObject("$group", groupIdFields);

    final DBObject projectFields = new BasicDBObject("_id", 0);
    projectFields.put("name", "$_id");
    projectFields.put("count", 1);
    final DBObject project = new BasicDBObject("$project", projectFields);

    final AggregationOutput aggregate = collection.aggregate(group, project);
于 2014-05-14T18:04:20.043 に答える
1

MongoDB Java ドライバーのDBCollection クラスを介してcount()distinct()、およびgroup()コマンドを使用して、単純な集計を行うことができます。

MongoDB の現在の製品バージョン (2.0.6) でより高度なクエリを実行するには、 MapReduceCommand クラスを介してMap/Reduceを使用できます。

MongoDB 2.2 (現在リリースに向けてテスト中) には、新しいAggregation Framework機能があります。Java ドライバーの 2.9.0 リリースには、集計ヘルパーが含まれます。

于 2012-07-31T10:30:03.020 に答える
0

私は mongodb の専門家ではありませんが、MongoDB MapReduce 機能を使用して集計を実行したり、MongoDB での集計に関するこのリンクを参照したりするのに適しているようです。

関連する質問:

于 2012-07-31T09:46:34.647 に答える