我按照official guide here将我的沙箱编码为data intial here,query 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}}
我做错了什么?
答案 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)