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 の場合にプレーヤーのスコアを 1 増やすには、次のようにします。

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

代わりに、ドキュメントを次のように構造化する必要があると思います

{
 gameName: "文字列",
 スラッグ: "文字列",
 プレイヤー: {playerName: {score: playerScore}},
}

次に、スコアを次のように更新できます。

db.games.update({"ゲーム名": "文字列"},
                {$inc: {"players.playerName.score": 1}
                }))
于 2012-05-06T14:56:42.133 に答える