更新嵌入式mongo数组值

时间:2014-08-01 16:41:20

标签: mongodb coffeescript

我目前设置了一个mongo对象。

{
        "_id" : "FtFKS23swBSEtEJAK",
        "active_users" : [
                {
                        "user" : {
                                "profile" : {
                                        ...
                                }
                        },
                        "maxMessages" : 25
                },
                {
                        "user" : {
                                "profile" : {
                                        ...
                                }
                        }
                        "maxMessages" : 25
                }
        ],
        "display_name" : "Testing"
}

现在,我正在尝试运行mongo查询,该查询将通过嵌入的活动用户并将maxMessages按给定值递增。

我似乎无法做到这一点。

这是我失败的尝试

activeUsersLength = Rooms.findOne({}).active_users.length

for i in [0..activeUsersLength-1]
    Rooms.update({_id: room}, {$inc: {'active_users.' + i + '.maxMessages': 1}})

1 个答案:

答案 0 :(得分:0)

Rooms.update({_id:room, "active_users.user": { $exists : true } },{$inc:{"active_users.$.maxMessages":1}  })

我没有测试

看一看 http://docs.mongodb.org/manual/reference/operator/projection/positional/#proj.S

由于@ dgiugg的评论,您无法更新数组https://jira.mongodb.org/browse/SERVER-1243中的更多元素