mongo - 为什么我的$ sum:1不计算?

时间:2018-01-19 17:55:56

标签: python mongodb

我按照official guide here将我的沙箱编码为data intial herequery code here

他们在python中查询

p=[{ "$project": { "month_joined": {"$month": "$joined"}  }},
   { "$group":   { "_id": {"month_joined": "$month_joined", "qty": {"$sum": 1}}  }},
   { "$sort":    { "_id.month_joined": 1  }},
   ]; qc=db.users.aggregate(p); mongo_print(qc)

p=[{ "$project": { "yyyy": {"$year": "$joined"}  }},
   { "$group":   { "_id": {"yyyy": "$yyyy", "qty": {"$sum": 1}}  }},
   { "$sort":    { "_id.yyyy": 1  }},
   ]; qc=db.users.aggregate(p); mongo_print(qc)

我总是将计数结果设为1

{'_id': {'month_joined': 1, 'qty': 1}}
{'_id': {'month_joined': 4, 'qty': 1}}
{'_id': {'month_joined': 6, 'qty': 1}}

{'_id': {'yyyy': 2011, 'qty': 1}}
{'_id': {'yyyy': 2012, 'qty': 1}}
{'_id': {'yyyy': 2016, 'qty': 1}}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

group阶段的右括号错误。 _id应分别仅包含月份和年份。它应该是这样的:

p=[{ "$project": { "month_joined": {"$month": "$joined"}  }},
   { "$group":   { "_id": {"month_joined": "$month_joined"}, "qty": {"$sum": 1}  }},
   { "$sort":    { "_id.month_joined": 1  }},
   ]; qc=db.users.aggregate(p); mongo_print(qc)

p=[{ "$project": { "yyyy": {"$year": "$joined"}  }},
   { "$group":   { "_id": {"yyyy": "$yyyy"}, "qty": {"$sum": 1}  }},
   { "$sort":    { "_id.yyyy": 1  }},
   ]; qc=db.users.aggregate(p); mongo_print(qc)