首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB聚合框架中的按数字分组

MongoDB聚合框架中的按数字分组
EN

Stack Overflow用户
提问于 2017-04-10 04:21:03
回答 2查看 63关注 0票数 0

我试图使用以下管道计算在特定年份出生的用户的数量。

代码语言:javascript
复制
{"$group": {"_id": "$birthdayYear", "count": {"$sum": 1}}}

但是我得到的是,所有年份都是sum,而Mongo没有$count函数,那么我能做些什么来根据用户出生的年份对用户进行分组呢?

示例文档

代码语言:javascript
复制
{
    "_id" : "LrN2tAK4rtyhsYFbr",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1984,
}

/* 1 */

代码语言:javascript
复制
{
    "_id" : "birthDayYear",
    "count" : 5550.0
}
EN

回答 2

Stack Overflow用户

发布于 2017-04-10 06:08:11

我已经将两个文档插入到用户集合中。

代码语言:javascript
复制
db.users.insert({ "_id" : "LrN2tAK4rtyhsYFbs",     "firstName" : "test",     "lastName" : "1",     "birthdayDay" : 5,     "birthdayMonth" : 8,     "birthdayYear" : 1984})

db.users.insert({ "_id" : "LrN2tAK4rtyhsYFbr",     "firstName" : "test",     "lastName" : "2",     "birthdayDay" : 6,     "birthdayMonth" : 9,     "birthdayYear" : 1984})

并运行以下查询

代码语言:javascript
复制
db.users.aggregate([{$group: {"_id": "$birthdayYear", count: {$sum:1}} }])

得到了结果

代码语言:javascript
复制
{ "_id" : 1984, "count" : 2 }
票数 0
EN

Stack Overflow用户

发布于 2017-04-10 06:08:40

请检查聚合语句的语法--我相信下面显示了所需的结果:

代码语言:javascript
复制
 db.tstso1.aggregate([{$group : {_id : "$birthdayYear", count: { $sum: 1 }}}])

结果:

代码语言:javascript
复制
{ "_id" : 1986, "count" : 2 }
{ "_id" : 1985, "count" : 3 }
{ "_id" : 1984, "count" : 6 }

文档:

代码语言:javascript
复制
 see.pretty();
{
    "_id" : "LrN2tAK4rtyhsYFbr",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1984
}
{
    "_id" : "2",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1984
}
{
    "_id" : "3",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1984
}
{
    "_id" : "4",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1984
}
{
    "_id" : "6",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1984
}
{
    "_id" : "7",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1984
}
{
    "_id" : "12",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1985
}
{
    "_id" : "13",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1986
}
{
    "_id" : "14",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1985
}
{
    "_id" : "16",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1986
}
{
    "_id" : "17",
    "firstName" : "abc",
    "lastName" : "",
    "birthdayDay" : 5,
    "birthdayMonth" : 8,
    "birthdayYear" : 1985
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43314929

复制
相关文章

相似问题

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