本周末我正在搞乱mongodb和node.js,我在浏览有关更新嵌套对象/文档的mongodb文档方面遇到了一些麻烦。
我有一个文件看起来像这样的集合..
{
gameName: "string",
slug: "string",
players: [{playerName, playerScore}, ...]
}
我正在尝试找出如何根据playerName增加playerScore的值。
我想这主要归结于我不理解NoSQL方法。我甚至想过为玩家使用数组,所以任何输入都会受到赞赏。
谢谢!
答案 0 :(得分:19)
您想要的结构是:
{
gameName: "string",
slug: "string",
players: [ { playerName: "string", playerScore: number} ] , ...]
}
如果他的名字是Joe,你可以使用:
将玩家得分增加1db.collection.update( {"players.playerName":"Joe"}, { $inc : { "players.$.playerScore" : 1 } }
答案 1 :(得分:5)
我相信您必须构建您的文档,而不是
{ gameName: "string", slug: "string", players: {playerName: {score: playerScore}}, }
然后您可以使用以下内容更新分数:
db.games.update({"gameName": "string"}, {$inc: {"players.playerName.score": 1} })