当前位置:  开发笔记 > 编程语言 > 正文

更新MongoDB中数组中的值

如何解决《更新MongoDB中数组中的值》经验,为你挑选了1个好方法。

我试图想出一种方法来更新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
            });
    });

但他们没有工作.我正在寻找一些方法来在每个会话中更新该值.



1> kristina..:

我想你想要的是:

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

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

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有