更新流星集合中的subarraylist

时间:2014-11-25 19:33:54

标签: javascript arrays mongodb meteor

我在会话中都有游戏_id和玩家ID

  Games.insert({
      board : hex_board(7),
      players : [{id : 0, hexIds : []}, {id : 1, hexIds : []}],
  });

到目前为止,我一直坚持:

  Games.update(Session.get("game"), {$addToSet : {players : ""}});

我不知道如何进一步细化它使用的播放器列表中的哪个元素,但标准位于Session.get("activePlayer")

当密钥被硬编码为0或1时几乎正常工作,我没有依赖于activePlayer var

        Games.update(Session.get("game"), {
            $addToSet : {
                "players." + Session.get("activePlayer") + ".hexIds" : Session.get("selected_hex")
            }
        });

以方法回答

Meteor.methods({
  addHexIds : function (hexIds, player, game) {
    Games.update({_id:game, "players.id" : player}, {
            $addToSet : {
                "players.$.hexIds" : hexIds
            }
        });
  }
});

1 个答案:

答案 0 :(得分:1)

或许这样......

Games.update(
    { board : hex_board(7), "players.id": 0 },
    {
        "$addToSet": { "players.$.hexIds": "foo" }
    }
)

你可以根据需要变化