Значение декремента в mongodb - PullRequest
1 голос
/ 14 апреля 2019

Я создаю приложение для покупок. У каждого пользователя есть кошелек. Структура как:

{ 
    "userName" : "Gandalf the Grey",
    "wallet" : 100,
    "orderHistory" : []
}

Скажите, этот пользователь покупает что-то, что стоит 50 единиц Есть ли лучший способ вместо извлечения значения кошелька с помощью findOne, а затем вычитания и обновления нового значения кошелька? Прямо сейчас я делаю это с 2 различными операциями, которые выглядят как

dbo.collection('users').findOne({'userName': controller.userName})
.then(function(doc) { 
    updateWallet(doc); 
}

тогда

let newWalletBalance = doc.wallet - product.cost;
dbo.collection('users').updateOne(
    {'userName':controller.userName},
    { $set: {wallet: newWalletBalance } }
);

Можно ли объединить их в один?

1 Ответ

0 голосов
/ 14 апреля 2019

Вы можете использовать $inc оператор

db.collection('users').updateOne(
  { 'userName': controller.userName },
  { '$inc': { 'wallet': -product.cost } }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...