Увеличивать значение во вложенном объекте?
Я провожу время с mongodb и node.js в этот уик-энд, и у меня возникли проблемы с получением документов mongodb относительно обновления вложенных объектов/документов.
У меня есть коллекция, в которой документы выглядят так.
{
gameName: "string",
slug: "string",
players: [{playerName, playerScore}, ...]
}
Я пытаюсь узнать, как увеличить значение playerScore на основе playerName.
Я предполагаю, что это в основном сводится к тому, что я не понимаю метод NoSQL. У меня даже есть другие мысли об использовании массива для игроков, поэтому любой ввод будет оценен.
Спасибо!
Ответы
Ответ 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}
})