21

我有猫鼬模式:

var Organization = new Schema({
  name: String,
  address: {
    street : String,
    city: String
  }
}, { collection: 'organization' });

如何通过猫鼬仅更新组织地址的街道部分?

4

3 回答 3

28

我找不到任何涵盖此简单案例的文档,因此我可以了解您遇到问题的原因。但这就像使用$set带有点符号的键来引用嵌入字段一样简单:

OrganizationModel.update(
  {name: 'Koka'}, 
  {$set: {'address.street': 'new street name'}}, 
  callback);
于 2013-09-26T13:45:49.443 回答
5

现在可以直接更新了。

OrganizationModel.update(
 {name: 'Koka'}, 
 {'address.street': 'new street name'}, 
 callback);
于 2020-04-28T11:13:31.287 回答
1

使用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();

注意 - 这也可用于更新多个和嵌套属性。

于 2021-07-22T18:11:51.510 回答