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 运算符一起填充 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 回答