首页 > 解决方案 > 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数组。因为在我的情况下可以在添加它之后更改这个时间(例如在更正的情况下),所以我在插入新条目之前删除了具有相同memberIdstepNumber的当前条目(如果存在) 。

这工作正常。

现在我想维护totalTime属性以始终保存对象的所有timeToFinish属性的总和。我需要这个,因为我需要显示前 N 个总时间,并且从性能角度(最多有 10k 个文档)计算总数而不是每次执行前 N 个请求时计算它会更好。

每次成功更新您的文档后,有没有办法处理此属性?

注意:我使用 Mongodb 3.6

标签: mongodb

解决方案


您可以使用 $push 来更新数组统计信息,并使用 $inc 来同时更新 totalTime。


推荐阅读