【问题标题】:How can i update all object in an array without id at MongoDB如何在 MongoDB 更新没有 id 的数组中的所有对象
【发布时间】:2016-07-19 03:58:17
【问题描述】:

我用 find() 方法调用元素,然后我想更新所有元素。例如:

db.collection.find().limit(10).update({$set: {'column' : 'value'}}); 

我该如何解决这个问题?

【问题讨论】:

    标签: node.js mongodb mongoose nosql


    【解决方案1】:

    默认情况下,它只更新它找到的第一个文档。您需要添加 multi = true 作为 update() 的选项来更新所有内容。不幸的是,update() 没有限制选项,因此您可以将其限制为 10。

    您可能必须先使用 limit 执行 find(),然后像这篇文章中提到的那样分别更新每个文档:

    How to limit number of updating documents in mongodb

    【讨论】:

      【解决方案2】:

      如果您想对集合中的每个文档应用更新,请使用{multi:true} 选项

      db.collection.update({},{$set: {'column' : 'value'}},{multi:true}); 
      

      更多详情请见collection.update

      但是,如果您想更新选定数量的文档,您将需要更长的路线。

      db.collection.find().limit(10).forEach(function(o){
          o.column = some_value; // replace some_value with real one.
          db.collection.update({_id:o._id},o);
      });
      

      【讨论】:

      • 感谢您的回复,但我收到此错误:db.collection.find(...).limit(...).update 不是函数:
      • 不,这样不行。很抱歉,我按原样粘贴了您的命令。立即尝试。
      • @saleem,OP 要求有限制的多重更新。您在那里的更新将更新集合中的每个文档,并且语法也不正确,因为第一个参数应该是查询选择器,而不是要更新的内容
      • 好吧,定义限制必须有一些条件。我认为限制不适用于更新它们适用于find.
      • 但是,唯一的限制方法是调用 find 和 limit 循环光标和 update。
      猜你喜欢
      • 2021-09-27
      • 2021-07-24
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多