【问题标题】:How to update a object in mongodb via mongoose?如何通过猫鼬更新 mongodb 中的对象?
【发布时间】:2013-10-02 00:38:28
【问题描述】:

我有猫鼬模式:

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

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

【问题讨论】:

  • 我只发现关于子文档数组而不是关于简单对象子文档。就我而言,我没有子文档数组。

标签: mongodb mongoose


【解决方案1】:

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

OrganizationModel.update(
  {name: 'Koka'}, 
  {$set: {'address.street': 'new street name'}}, 
  callback);

【讨论】:

【解决方案2】:

现在可以直接更新了。

OrganizationModel.update(
 {name: 'Koka'}, 
 {'address.street': 'new street name'}, 
 callback);

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-28
      • 2020-07-19
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 2016-04-29
      相关资源
      最近更新 更多