我对 MongoDB 还很陌生,我正在尝试弄清楚当其中一个字段是计算日期字段时如何按多个字段进行分组:
我的数据如下(简化):
{
"_id" : ObjectId("52d6ed19e4b0a491abb53ff2"),
"build_duration" : 667075,
"build_number" : 40,
"build_result" : "SUCCESS",
"build_timestamp" : ISODate("2014-01-15T20:07:27.324Z"),
"job_name" : "ABC"
}
我知道我可以做这样的事情来按多个字段进行分组:
db.builds.aggregate(
{ $group: { _id: { build_result: "$build_result", job_name: "$job_name"},
build_duration: { $avg: "$build_duration" } } }
)
但是,如果我尝试使用 $dayOfYear 函数对日期进行分组,则会收到错误:
db.builds.aggregate(
{ $group: { _id: { build_result: "$build_result", $dayOfYear: "$build_timestamp"},
build_duration: { $avg: "$build_duration" } } }
)
Error:
Error: Printing Stack Trace
at printStackTrace (src/mongo/shell/utils.js:37:15)
at DBCollection.aggregate (src/mongo/shell/collection.js:897:9)
at (shell):1:11
Thu Jan 16 13:34:08.036 aggregate failed: {
"errmsg" : "exception: the operator must be the only field in a pipeline object (at '$dayOfYear'",
"code" : 15983,
"ok" : 0
} at src/mongo/shell/collection.js:898
所需的输出将是按日期和 build_result 以及 build_duration 平均值进行分组。提前致谢。