我是mongodb的新手并且第一次尝试聚合。在这里,我试图按每15分钟对推文进行分组。当我尝试在mongo控制台中运行以下查询时,我收到错误:
管道阶段规范对象必须只包含一个字段。
db.hashtag.aggregate([
{ "$group": {
"_id": {
"year": { "$year": "$tweettime" },
"dayOfYear": { "$dayOfYear": "$tweettime" },
"interval": {
"$subtract": [
{ "$minute": "$tweettime" },
{ "$mod": [{ "$minute": "$tweettime"}, 15] }
]
}
}},
"count": { "$sum": 1 }
}
])
我无法在SO中找到原因的好解释。请分享您对此主题的看法以及查询错误的原因。
答案 0 :(得分:16)
MongoDB抱怨,因为你的管道中有一个无法识别的管道阶段规范"count": { "$sum": 1 }
。
正确格式化时的原始管道
db.hashtag.aggregate([
{
"$group": {
"_id": {
"year": { "$year": "$tweettime" },
"dayOfYear": { "$dayOfYear": "$tweettime" },
"interval": {
"$subtract": [
{ "$minute": "$tweettime" },
{ "$mod": [{ "$minute": "$tweettime"}, 15] }
]
}
}
},
"count": { "$sum": 1 } /* unrecognised pipeline specification here */
}
])
{
"$group": {
"_id": {
"year": { "$year": "$tweettime" },
"dayOfYear": { "$dayOfYear": "$tweettime" },
"interval": {
"$subtract": [
{ "$minute": "$tweettime" },
{ "$mod": [{ "$minute": "$tweettime"}, 15] }
]
}
},
"count": { "$sum": 1 }
}
}
])