我有猫鼬模式:
var Organization = new Schema({
name: String,
address: {
street : String,
city: String
}
}, { collection: 'organization' });
如何通过猫鼬仅更新组织地址的街道部分?
我找不到任何涵盖此简单案例的文档,因此我可以了解您遇到问题的原因。但这就像使用$set
带有点符号的键来引用嵌入字段一样简单:
OrganizationModel.update(
{name: 'Koka'},
{$set: {'address.street': 'new street name'}},
callback);
现在可以直接更新了。
OrganizationModel.update(
{name: 'Koka'},
{'address.street': 'new street name'},
callback);
使用Document set也可以更新指定的属性。通过这种方法,我们可以使用“保存”来验证数据。
doc.set({
path : value
, path2 : {
path : value
}
}
示例:使用文档集更新产品架构并保存。
// Update the product
let productToUpdate = await Product.findById(req.params.id);
if (!productToUpdate) {
throw new NotFoundError();
}
productToUpdate.set({title:"New Title"});
await productToUpdate.save();
注意 - 这也可用于更新多个和嵌套属性。