Подтвердить что ты не робот

Увеличивать значение во вложенном объекте?

Я провожу время с mongodb и node.js в этот уик-энд, и у меня возникли проблемы с получением документов mongodb относительно обновления вложенных объектов/документов.

У меня есть коллекция, в которой документы выглядят так.

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

Я пытаюсь узнать, как увеличить значение playerScore на основе playerName.

Я предполагаю, что это в основном сводится к тому, что я не понимаю метод NoSQL. У меня даже есть другие мысли об использовании массива для игроков, поэтому любой ввод будет оценен.

Спасибо!

4b9b3361

Ответ 1

Структура, которую вы хотите:

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

Чтобы увеличить счет игрока на один, если его зовут Джо, вы должны использовать:

db.collection.update( {"players.playerName":"Joe"}, { $inc : { "players.$.playerScore" : 1 } }

Ответ 2

Я считаю, что вам нужно будет структурировать свой документ, а не

{
 gameName: "string",
 slug: "string",
 players: {playerName: {score: playerScore}},
}

Затем вы можете обновить счет:

db.games.update({"gameName": "string"},
                {$inc: {"players.playerName.score": 1}
                })