0

次のようなColumn1とColumn2の列を持つテーブルがあります

    Colum1 Column2 
     A       1
     A       2
     A       3
     B       2
     B       4
     B       6

MYSQLで次のSQLを実行すると

      SELECT Column1, Column2, count(*) from Table group by Column1;

結果は

  Column1 Column2 Count(*)
   A         1         3
   B         2         3

MONGODBで同様のクエリを実行したい

私は試した

 QUERY1: db.table.aggregate({$group: {_id:"$Column1", count:{$sum:1}} })
 QUERY2: db.table.aggregate({$project: {column1:1, column2:1}}, {$group: {_id:"$Column1", count:{$sum:1}} })

ただし、Query2 の結果は Query1 と同じです。$group 列に記載されている以外のフィールドに入力できないようです。

$group operator とともに mongodb の他のフィールドにデータを入力する方法はありますか?

4

1 に答える 1

1

私は mysql クエリを正しく読んだかどうか確信が持てず、なぜこれが特に役立つのか理解できませんが$first、同じことを達成しているようです。

ただし、$firstドキュメントに記載されているように、結果は並べ替えに依存するため、並べ替え基準を含める必要があります。

データ (簡潔にするために列名を短縮)

> db.foo.insert({"C1" : "A", "C2" : 1});
> db.foo.insert({"C1" : "A", "C2" : 2});
> db.foo.insert({"C1" : "A", "C2" : 3});
> db.foo.insert({"C1" : "B", "C2" : 2});
> db.foo.insert({"C1" : "B", "C2" : 4});
> db.foo.insert({"C1" : "B", "C2" : 6});

集計クエリ

> db.foo.aggregate({$group: {_id:"$C1", C2: { $first: "$C2" }, count:{$sum:1}} })

結果

{
        "result" : [
                {
                        "_id" : "B",
                        "C2" : 2,
                        "count" : 3
                },
                {
                        "_id" : "A",
                        "C2" : 1,
                        "count" : 3
                }
        ],
        "ok" : 1
}
于 2013-04-05T12:12:29.440 に答える