mongodb - Mongodb - 成功更新后将文档属性的总和设置为另一个
问题描述
我有一个包含不同团队分数的结果集合。这里的每个对象都代表了每支球队的得分详情。
{
"_id" : "1",
"stats" : [
{
"memberId" : "player1",
"stepNumber" : 1
"timeToFinish" : 12
},{
"memberId" : "player1",
"stepNumber" : 2
"timeToFinish" : 18
},{
"memberId" : "player2",
"stepNumber" : 1
"timeToFinish" : 10
},{
"memberId" : "player2",
"stepNumber" : 2
"timeToFinish" : 12
},
],
"totalTime" : 52 //12+18+10+12
}
每次成员完成一个步骤时,我都会使用完成该步骤所花费的时间来更新stats数组。因为在我的情况下可以在添加它之后更改这个时间(例如在更正的情况下),所以我在插入新条目之前删除了具有相同memberId和stepNumber的当前条目(如果存在) 。
这工作正常。
现在我想维护totalTime属性以始终保存对象的所有timeToFinish属性的总和。我需要这个,因为我需要显示前 N 个总时间,并且从性能角度(最多有 10k 个文档)计算总数而不是每次执行前 N 个请求时计算它会更好。
每次成功更新您的文档后,有没有办法处理此属性?
注意:我使用 Mongodb 3.6
解决方案
您可以使用 $push 来更新数组统计信息,并使用 $inc 来同时更新 totalTime。
推荐阅读
- flutter - 如何避免此功能在用户按下按钮时执行多次?- 颤动
- r - 在下面非常简单的 R 代码中,我的 IF/ELSE 或 FOR 循环有什么问题?
- jenkins - 如何重用 Jenkins Parallel 的重复代码包括阶段部分?
- c# - Unity ML_Agents 尝试初始化通信时出现意外异常:System.IO.IOException
- javascript - 如何以编程方式打开/关闭 antd 子菜单
- mongodb - Mongdb geonear 查询具有给定字段的唯一性并按日期获取最新记录
- excel - 停止/启动模块更改
- sql - 以小时和分钟选择两个日期的差异
- optimization - 修复以从已使用的应用程序中删除未使用的 Javascript 来优化 shopify 网站
- javascript - 将 HTML 转换为 PNG 图像