我有一个products
集合,其中某些产品具有以下结构:
{
_id: anID
shops:
[
{
_id : shopId,
price: productsPrice
},
...
]
}
我想更新给定产品和商店的价格,但是如果阵列中不存在该商店,请用他的价格插入该商店。
我是MongoDB的初学者。使用Node.Js / express(mongoDB驱动程序),但不使用猫鼬。
提前致谢
最佳答案
您可以尝试.bulkWrite()-这将推送一个新的shop对象或更新现有的对象:
var inputObj = { "_id": anShopID, "price": someValue }
db.collection.bulkWrite([{
updateOne: {
"filter": { "_id": anID, "shops._id": inputObj._id },
"update": { $set: { "shops.$.price": inputObj.price } }
}
}, {
updateOne: {
"filter": { "_id": anID, "shops._id": { $ne: inputObj._id } },
"update": { $push: { "shops": inputObj } }
}
}])