【问题标题】:In Mongoose (node.js MongoDB), how do I perform this update?在 Mongoose (node.js MongoDB) 中,如何执行此更新?
【发布时间】:2011-10-01 19:02:53
【问题描述】:
{ 
   _id: 'abc123',
   reports: [ 
             { uid: 33, name: 'john' }, 
             { uid: 215, name: 'jess' },
             { uid: 29, name: 'hal'}
           ]
}

假设我有上面的文档。

models.Stuff.findOne({_id:'abc123'},function(err,result){
     //Got the above record.
});

拿到文档后,如何将所有的“uid”都改成0?我想浏览所有文档的报告并将所有 uid 更改为 0。

【问题讨论】:

    标签: node.js mongodb mongoose database


    【解决方案1】:
    for(i in result.reports){
        result.reports[i].uid = 0;
    }
    result.save();
    

    【讨论】:

    • 也可能有一种方法可以通过update() 使用$set 来执行此操作,尽管在嵌入式文档中我不能 100% 确定它是如何工作的。
    • 因为reports 是一个“对象数组”,所以$set 表示法不可靠(您必须更新特定的数组索引)。当然,在上面的示例中,您必须认识到您可能正在锤击某人的更改。 (也许他们在您更改 uid 时执行了 $push)根据您的用例,这里肯定有数据争用的空间。
    【解决方案2】:

    最好使用pinch.min.js,这对于这种需求来说非常方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 2011-12-04
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 2020-05-11
      • 2011-07-26
      • 1970-01-01
      相关资源
      最近更新 更多