mongodb findOneAndUpdate with flatten $ set with index position不作为数组插入

时间:2018-05-20 13:17:47

标签: mongodb node-mongodb-native

我正在编写通用代码,它将作为原子操作添加和更新,因此使用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查询,因此我尽量不要更改查询。 请帮忙。

1 个答案:

答案 0 :(得分:0)

db.test.findOneAndUpdate({"saleId" : "7d55acf0-5bc2-11e8-b3e5-c51df4c55083"},{$set:{"price.priceTier":{$push:{"unitSold": 1}}}, {upsert:true})