gpt4 book ai didi

MongoDB 1.6.5 : how to rename field in collection

转载 作者:IT老高 更新时间:2023-10-28 13:06:38 37 4
gpt4 key购买 nike

$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 不支持跨集合的事务,但以上是单个文档。因此,您可以保证 set 和 unset 将是原子的(即它们都成功或都失败)。

这里唯一的限制是您需要管理外部编写者以保持数据一致。我对此的正常偏好只是在更新时关闭写入。如果此选项不可用,那么您必须弄清楚您希望数据的一致性级别。 (我可以在这里提供一些想法,但它确实会针对您的数据和系统)

关于MongoDB 1.6.5 : how to rename field in collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4813160/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com