MongoDB 1.6.5:如何重命名集合中的字段

$ rename功能仅在开发版本1.7.2中可用。
如何重命名字段在1.6.5?
执行这种操作的最简单的方法是循环遍历重映射字段名称的数据集。最简单的方法是写一个执行重写的函数,然后在shell中使用.find()。forEach()语法。

这是shell中的一个示例:

db.foo.save({ a : 1, b : 2, c : 3});
db.foo.save({ a : 4, b : 5, c : 6});
db.foo.save({ a : 7, b : 8 });
db.foo.find();

remap = function (x) {
  if (x.c){
    db.foo.update({_id:x._id}, {$set:{d:x.c}, $unset:{c:1}});
  }
}

db.foo.find().forEach(remap);
db.foo.find();

在上面的例子中,我在同一个动作中做了一个$ unset和$ set。 MongoDB不支持集合中的事务,但上述是单个文档。所以你保证设置和未设置将是原子的(即它们都成功或者都失败)。

这里唯一的限制是,您需要管理外部作者以保持数据一致。我的普通偏好只是在更新时关闭写入。如果此选项不可用,则必须确定数据所需的一致性级别。 (我可以在这里提供一些想法,但它真的将会针对您的数据和系统)

http://stackoverflow.com/questions/4813160/mongodb-1-6-5-how-to-rename-field-in-collection

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:MongoDB 1.6.5:如何重命名集合中的字段