【发布时间】:2014-03-22 02:40:34
【问题描述】:
我在 MongoDB 中有一组构建统计信息,我想知道是否可以对其中一个字段进行通配符聚合查询。
这是一个示例文档:
{
"_id" : ObjectId("52deab2fe4b0a491abb54108"),
"type" : "build",
"time" : ISODate("2014-01-21T17:15:27.471Z"),
"data" : {
"buildNumber" : 43,
"buildDuration" : 997308,
"buildProjectName" : "Mobile_February",
"branch" : "FEB"
"buildResult" : "SUCCESS"
}
}
我有这个查询,它将按日期和分支为我提供平均构建持续时间:
db.builds.aggregate([
{ $group: {
_id: {
month: { $month: "$time" },
day: { $dayOfMonth: "$time" },
year: { $year: "$time" },
branch: "$data.branch",
},
buildDuration: { $avg: "$data.buildDuration" }
} },
{ $sort: { "_id.year": 1, "_id.month": 1, "_id.day": 1, "_id.branch": 1 } }
])
我们有几个相同类型的构建作业 - 每个月一个。有 Mobile_February、Mobile_March 等。我们对其他工作也有相同的标准...OtherJob_February、OtherJob_March 等。
我想知道是否有某种特定类型的工作运行时间更长或更短。这意味着我不会在分支上分组,而是在 buildProjectName 上分组,但它必须是通配符搜索才能带回 Mobile_* 和 OtherJob_* 的分组
这对 MongoDB 可行吗?一种解决方案是添加一个新的元素名称——比如“jobType”:“Mobile”,但如果 MongoDB 有办法使用现有数据来做这件事,这似乎很浪费。
谢谢!
【问题讨论】:
标签: mongodb