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

findOneAndUpdate - Update the first object in array that has specific attribute

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

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 = {
            x: "125",
            status: 'joined'
         };

我设法找到了可行的解决方案!

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