16

这个周末我在搞乱 mongodb 和 node.js,我在通过 mongodb 文档更新嵌套对象/文档时遇到了一些麻烦。

我有一个集合,其中的文档看起来像这样..

{
 gameName: "string",
 slug: "string",
 players: [{playerName, playerScore}, ...]
}

我试图找出如何根据 playerName 增加 playerScore 的值。

我想这主要是因为我不了解 NoSQL 方法。我什至对为玩家使用数组有第二个想法,所以任何输入都将不胜感激。

谢谢!

4

2 回答 2

20

你想要的结构是:

{
 gameName: "string",
 slug: "string",
 players: [ { playerName: "string", playerScore: number} ] , ...]
}

如果他的名字是 Joe,要将玩家得分加一,您可以使用:

db.collection.update( {"players.playerName":"Joe"}, { $inc : { "players.$.playerScore" : 1 } }
于 2012-05-07T11:56:43.007 回答
6

我相信您将不得不构建您的文档,而不是像

{
 游戏名称:“字符串”,
 蛞蝓:“字符串”,
 玩家:{playerName:{score:playerScore}},
}

然后你可以更新分数:

db.games.update({"gameName": "string"},
                {$inc: {"players.playerName.score": 1}
                })
于 2012-05-06T14:56:42.133 回答