我是MongoDB的新手,我正试图弄清楚如何根据两个元素进行分组,其中一个是时间,另一个是子文档。我的数据结构基于多维数据集结构:
{
"_id" : ObjectId("52d931f9f61313b46bf456b0"),
"type" : "build",
"time" : ISODate("2014-01-17T01:27:18.413Z"),
"data" : {
"build_number" : 7,
"build_duration" : 885843,
"build_url" : "job/Test_Job/7/",
"build_project_name" : "Test_Job",
"build_result" : "SUCCESS"
}
}
当我的结构平坦时,我能够获得一些Stackoverflow帮助分组,但是我遇到了数据子文档的问题。以下是我尝试过的众多查询变体之一:
db.nb.aggregate(
{
$group: {
_id: {
dayOfMonth: { $dayOfMonth: "$time" },
build_project_name: { data: $build_project_name }
},
build_duration: { $avg: data: { "$build_duration" } }
},
}
)
我在语法上尝试了很多不同的变体,但似乎无法让它变得非常正确。提前谢谢。
答案 0 :(得分:1)
我想你想要做到这一点:
db.nb.aggregate(
[
{$group:
{_id:
{ dayOfMonth: { $dayOfMonth: "$time" },
build_project_name: "$data.build_project_name"
},
build_duration: { $avg: "$data.build_duration" }}
}
])
首先,记住聚合接收输入的操作数组:
db.collection.aggregate([
{...},
{...}
])
其次,对子文档的引用表示为树,因此$ data.buildduration指向节点数据"字段"在数据内部建立。