findOneAndUpdate - 更新数组中具有特定属性的第一个对象

时间:2015-02-27 23:08:26

标签: node.js mongodb mongoose

我有一个具有属性的对象。这包括一系列具有自己属性的其他对象。

Lobby:
  --> "a": "b"
  --> "c": "d"
  --> Players:[
         --> 0
           --> "x": "23"
           --> "status": "ready"
         --> 1
           --> "x": "54"
           --> "status": "open"
         --> 2
           --> "x": "16"
           --> "status": "open"

我如何将具有"status": "open"(在本例中为1)的第一个Player对象更新为新对象?

例如:

player = {
            x: "125",
            status: 'joined'
         };

1 个答案:

答案 0 :(得分:3)

我设法找到了一个有效的解决方案!

Game.findOneAndUpdate({'a': 'b', 'Players.status': 'open'}, { $set : { 'Players.$': player} },
function (err, doc) {
    if (err) {
        console.log(err);
    } else {
        // Do stuff
    }
});
相关问题