【问题标题】:Update values in array in MongoDB更新 MongoDB 中数组中的值
【发布时间】:2011-03-02 08:48:18
【问题描述】:

我正在尝试想出一种方法来更新 mongo 中对象数组中的值。我有一个看起来像的集合

   [
     { CourseName: '',
       Sessions: [
              {
                 _id: null, //oops I didn't set this in the import
                 Name: 'blah',
                 Location: 'moon'
              }]
     }
    ]

现在我需要设置 _id 字段。我尝试了记录在案的方法

db.Course.update({'Sessions._id': null}, {$set:{'Sessions.$._id': ObjectId()}}, false, true)

但是我遇到了这个错误http://jira.mongodb.org/browse/SERVER-1055,这意味着我做不到。是否有一些语法可以让我只遍历集合并手动更新每条记录?我尝试了一些类似的东西

db.Course.find().forEach(
    function(course) 
    {
        course.Sessions.forEach(function(session)
            {
                session._id=ObjectId();
                course.Save(session); //Don't know how to save a single object
            });
    });

但他们没有工作。我正在寻找某种方法来更新每个会话中的值。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    我想你想要的是:

    db.Course.find().forEach(
        function(course) 
        {
            course.Sessions.forEach(function(session)
                {
                    session._id=ObjectId();
                });
            db.Course.save(course);
        });
    

    但是,在将内容保存到正在迭代的集合中时可能会遇到问题,因此我建议将一堆文档加载到数组中、处理它们、加载另一个批次等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 2015-08-27
      • 2016-02-09
      • 2018-03-14
      • 1970-01-01
      • 2018-03-10
      • 2020-09-15
      相关资源
      最近更新 更多