我有一个商店,其中商品价格是根据可用的数量确定的,所以每当用户请求商品时,我都必须计算价格基于请求数量
我必须以原子方式实施价格计算,以便在计算正在进行的交易和价格或 availableQuantity 更改,它不应该影响两个事务。
初始数据库
{
"_id": "1",
"availableQuantity": 10,
"pricePerItem": 15
},
{
"_id": "2",
"availableQuantity": 5,
"pricePerItem": 10
},
{
"_id": "3",
"availableQuantity": 6,
"pricePerItem": 20
}
这意味着
我可以卖出价格 10 / item 的 5 商品
下一个 10 商品,价格 15 /商品
下一个 6 商品,价格 20 /商品
用户“A”想购买8件商品,价格将按此计算
首先,在我们的案例中将选择最低价格对象 _Id:“2”
5 项目将从此对象中获取,然后 price = 10 * 5 = 50
更新了数据库
{
"_id": "1",
"availableQuantity": 10,
"pricePerItem": 15
},
{
"_id": "3",
"availableQuantity": 6,
"pricePerItem": 20
}
剩余 3 项目将从 _id:“1”的最低价格对象中扣除 3 项目的价格价格= 3 * 15 = 45
用户“A” 8 项目的总价将总价= 50 + 45 = 95
最终数据库
{
"_id": "1",
"availableQuantity": 7,
"pricePerItem": 15
},
{
"_id": "3",
"availableQuantity": 6,
"pricePerItem": 20
}
在用户“A”交易期间,如果用户“B”正在请求 4 项目,那么我们应该如何确定正确的价格。
注意:预计许多交易会同时发生
答案 0 :(得分:0)
Mongodb不支持交易。有一些不太受欢迎的npm软件包模仿应用程序级别的事务行为,但就是这样:(