我有mongoose架构:
var Organization = new Schema({
name: String,
address: {
street : String,
city: String
}
}, { collection: 'organization' });
如何通过mongoose仅更新组织的街道部分地址?
答案 0 :(得分:16)
我找不到任何涵盖这个简单案例的文档,所以我可以看出你遇到麻烦的原因。但它就像使用$set
和一个使用点符号引用嵌入字段的键一样简单:
OrganizationModel.update(
{name: 'Koka'},
{$set: {'address.street': 'new street name'}},
callback);
答案 1 :(得分:2)
现在您可以直接更新。
OrganizationModel.update(
{name: 'Koka'},
{'address.street': 'new street name'},
callback);
答案 2 :(得分:0)
还可以使用 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();
注意 - 这也可用于更新多重和嵌套属性。