我正在编写通用代码,它将作为原子操作添加和更新,因此使用findOneAndUpdate
。我将带有数组的展平数据作为对象而不是数组插入。以下是详细信息。
db.test.findOneAndUpdate({"saleId" : "7d55acf0-5bc2-11e8-b3e5-c51df4c55083"},{$set:{"price.priceTier.0.unitSold": 1,}}, {upsert:true})
db.test.find()
{ "_id" : ObjectId("5b0173fbcd90c934727269ac"), "saleId" : "7d55acf0-5bc2-11e8-b3e5-c51df4c55083", "price" : { "priceTier" : { "0" : { "unitSold" : 1 } } } }
如何确保{$set:{"price.priceTier.0.unitSold": 1,}}
应添加为如下数组?
{ "_id" : ObjectId("5b0173fbcd90c934727269ac"), "saleId" : "7d55acf0-5bc2-11e8-b3e5-c51df4c55083", "price" : { "priceTier" : [{ "unitSold" : 1 } ]} }
由于我正在尝试编写通用代码并使用flat
npm
模块来展平我的输入数据以转换为mongodb
查询,因此我尽量不要更改查询。
请帮忙。
答案 0 :(得分:0)
db.test.findOneAndUpdate({"saleId" : "7d55acf0-5bc2-11e8-b3e5-c51df4c55083"},{$set:{"price.priceTier":{$push:{"unitSold": 1}}}, {upsert:true})