如何通过mongoose更新mongodb中的对象?

时间:2013-09-26 07:05:22

标签: mongodb mongoose

我有mongoose架构:

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

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

3 个答案:

答案 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();

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