首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用群算子获取mongodb中的投影

问如何用群算子获取mongodb中的投影
EN

Stack Overflow用户
提问于 2013-04-05 11:11:50
回答 1查看 1.5K关注 0票数 0

我有一个列为Column1 & Column2的表,如下所示

代码语言:javascript
复制
    Colum1 Column2 
     A       1
     A       2
     A       3
     B       2
     B       4
     B       6

如果我在MYSQL中执行以下SQL操作

代码语言:javascript
复制
      SELECT Column1, Column2, count(*) from Table group by Column1;

结果是

代码语言:javascript
复制
  Column1 Column2 Count(*)
   A         1         3
   B         2         3

我想对MONGODB执行类似的查询。

我试过了

代码语言:javascript
复制
 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中的其他字段?

EN

回答 1

Stack Overflow用户

发布于 2013-04-05 12:12:29

我不确定我是否正确地阅读了mysql查询,我也不明白为什么这特别有用,但是$first似乎完成了同样的任务。

但是,正如在 documentation中提到的,结果取决于排序,因此您应该包括一个排序标准。

数据(为简洁起见而缩短的列名)

代码语言:javascript
复制
> 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});

聚合查询

代码语言:javascript
复制
> db.foo.aggregate({$group: {_id:"$C1", C2: { $first: "$C2" }, count:{$sum:1}} })

结果

代码语言:javascript
复制
{
        "result" : [
                {
                        "_id" : "B",
                        "C2" : 2,
                        "count" : 3
                },
                {
                        "_id" : "A",
                        "C2" : 1,
                        "count" : 3
                }
        ],
        "ok" : 1
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15832426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档