Mongodb-成功更新后,将文档属性的总和设置为另一个

Mongodb-成功更新后,将文档属性的总和设置为另一个,mongodb,Mongodb,我有一个结果集合,包含不同团队的分数。这里的每个对象表示每个团队的分数详细信息 { "_id" : "1", "stats" : [ { "memberId" : "player1", "stepNumber" : 1 "timeToFinish" : 12 },{ "memberId" : "player1", "stepNumber" : 2 "timeToFinish" : 18 },{ "memberId"

我有一个结果集合,包含不同团队的分数。这里的每个对象表示每个团队的分数详细信息

{
"_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个请求时都计算总次数

是否有办法在每次成功更新电子文档后处理此属性


NB:我使用Mongodb 3.6

你可以使用$push来更新数组统计,同时使用$inc来更新totalTime。

如果这个用例不存在,这将是一个可能的解决方案(从原始帖子中),因为在我的情况下,在添加它之后,这次可能会更改它(例如在更正的情况下),在插入新条目之前,我删除了具有相同memberId和stepNumber的当前条目(如果存在的话)。这听起来像CRUD的某种触发机制。如果你只想要那个扳机,我还没遇到。祝你好运