例如,如果我们有一个产品变体场景,其中一个产品可以有很多变体。 如果我们想要更新产品及其变体,来自客户端应用程序的请求如下所示,并且我们不知道变体数组中的哪一个变体被客户端更改了,所以我们必须在每个请求中更新所有的变体数组来更新,如何使用“Mongoose,MongoDB”更新函数或批量写更新操作来处理这种情况?
注意:产品和变体是不同的文档,我想在一个单一的操作中更新变体
{
"_id": "5ef4f34dd43f52cff62459aa",
"brand":"5cc9aeeaa3918f2e43e046af",
"isActive":true,
"name":"Product V",
"supplier":"5ccb24fc3760713f4d9dbd1b",
"supplierCode":"12343212234r2",
"tags":[
"5cd90de9f374d90ed569ab35"
],
"type":"5ccad8a1efe8713bc1cac566",
"variants":[
{
"_id":"5ef4fad0e0e5dfd29e188811",
"retailMarkup":0,
"retailPrice":0,
"sku":"T001-W-M",
"inventory":[
{
"storeId":"5ef4fad0e0e5dfd29e188823",
"quantity":0
}
]
},
{
"_id":"5ef4fad0e0e5dfd29e188811",
"retailMarkup":0,
"retailPrice":0,
"sku":"T001-W-M",
"inventory":[
{
"storeId":"5ef4fad0e0e5dfd29e188823",
"quantity":0
}
]
}
]
}
正如在聊天中所讨论的,这将符合您的要求
var bulk = db.variants.initializeUnorderedBulkOp();
bulk.find( { _id: <variant_id_1> } ).update( { $set: <variant_doc_1>});
bulk.find( {_id: variant_id_2 } ).update( { $set: <variant_doc_2> } );
.....
bulk.execute();