【发布时间】:2022-11-09 03:58:27
【问题描述】:
我在 MongoDB 4.2 版的“部署”集合中存储了以下文档。
我想按 productId 并在一系列日期之间实现以下结果组。
我已经使用这个查询实现了执行时间。
db.getCollection('Deployments').aggregate([
{
$match : {$and:[{ "startedAt": { $gte: new ISODate("2021-10-01") } },
{ "startedAt": { $lte: new ISODate("2021-11-17") } }]}
},
{
$group : {
_id:"$productId",
count: { $sum: 1 },
minExecutionTime:
{
$min:
{
$divide:[{$subtract:["$completedAt", "$startedAt"]}, 1000 * 60]
}
},
maxExecutionTime:
{
$max:
{
$divide:[{$subtract:["$completedAt", "$startedAt"]}, 1000 * 60]
}
},
avgExecutionTime:
{
$avg:
{
$divide:[{$subtract:["$completedAt", "$startedAt"]}, 1000 * 60]
}
}
}
}
])
- 请帮我把计数添加到这个查询中?
- 如何将执行时间截断到小数点后 2 位?
- 如果对此查询有任何优化,请提出建议。
文件:
[ { "productId": 1, "deploymentStatus": "Succeeded", "startedAt": ISODate("2021-01-21T14:00:19.782Z"), "completedAt": ISODate("2021-01-21T14:03:55.789Z") }, { "productId": 2, "deploymentStatus": "Failed", "startedAt": ISODate("2021-01-21T15:00:19.782Z"), "completedAt": ISODate("2021-01-21T15:03:55.789Z") }, { "productId": 3, "deploymentStatus": "Cancelled", "startedAt": ISODate("2021-01-21T16:00:19.782Z"), "completedAt": ISODate("2021-01-21T16:03:55.789Z") }, { "productId": 1, "deploymentStatus": "Failed", "startedAt": ISODate("2021-01-21T17:00:19.782Z"), "completedAt": ISODate("2021-01-21T17:03:55.789Z") }, { "productId": 2, "deploymentStatus": "Failed", "startedAt": ISODate("2021-01-21T18:00:19.782Z"), "completedAt": ISODate("2021-01-21T18:03:55.789Z") }, { "productId": 3, "deploymentStatus": "Succeeded", "startedAt": ISODate("2021-01-21T19:00:19.782Z"), "completedAt": ISODate("2021-01-21T19:03:55.789Z") }, { "productId": 1, "deploymentStatus": "Cancelled", "startedAt": ISODate("2021-01-21T20:00:19.782Z"), "completedAt": ISODate("2021-01-21T20:03:55.789Z") }, { "productId": 2, "deploymentStatus": "Failed", "startedAt": ISODate("2021-01-21T21:00:19.782Z"), "completedAt": ISODate("2021-01-21T21:03:55.789Z") }, { "productId": 3, "deploymentStatus": "Succeeded", "startedAt": ISODate("2021-01-21T22:00:19.782Z"), "completedAt": ISODate("2021-01-21T22:03:55.789Z") } ]
【问题讨论】:
-
如果您可以以文档形式而不是图像形式提供示例数据集,将会很有帮助。
-
以文档形式添加数据集,请验证。
-
你可以用你的示例添加一个游乐场吗?
-
还添加了 mongo 游乐场链接 - mongoplayground.net/p/llobFoovRNN
标签: mongodb mongodb-query aggregation-framework