我试图想出一种方法来更新mongo中对象数组中的值.我有一个看起来像的集合
[
{ CourseName: '',
Sessions: [
{
_id: null, //oops I didn't set this in the import
Name: 'blah',
Location: 'moon'
}]
}
]
Run Code Online (Sandbox Code Playgroud)
现在我需要设置_id字段.我尝试了有记录的做法
db.Course.update({'Sessions._id': null}, {$set:{'Sessions.$._id': ObjectId()}}, false, true)
Run Code Online (Sandbox Code Playgroud)
但我遇到了这个错误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
});
});
Run Code Online (Sandbox Code Playgroud)
但他们没有工作.我正在寻找一些方法来在每个会话中更新该值.
我想你想要的是:
db.Course.find().forEach(
function(course)
{
course.Sessions.forEach(function(session)
{
session._id=ObjectId();
});
db.Course.save(course);
});
Run Code Online (Sandbox Code Playgroud)
但是,您可能会遇到将问题保存到正在迭代的集合中的问题,因此我建议将一堆文档加载到数组中,处理它们,加载另一批等等.
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |