[英]MongoDB - Converting fields from int32 to int64
我在MongoDB
有一个不同的大型数据集,其中有带有数字字段的文档。 由于数据导入中的一些问题,其中一些字段以int32 datatype
结束,有些以int64 datatype
。
我需要将它们全部转换为 int32。 由于许多字段是嵌套的文档/数组,因此我无法使用MongoChef
或RoboMongo
来编辑该字段并进行集合范围的替换。
我的下一个最佳选择是什么? 我是否需要编写一个脚本来循环遍历每个文档/字段并将它们显式转换为NumberInt()
。 我可以在PHP or Python
做到这一点,但我想知道是否有办法在不编写额外代码的情况下做到这一点。
有没有可以完成的mongoshell魔术? 如果有任何 Mongo 大师能给我任何见解,我将不胜感激。
对于任何想要这样做并来到这里的人。 你可以跑
db.foo.find().forEach(doc => {
const newBar = bar.valueOf()
db.foo.update({
"_id" : doc._id
}, {
"$set" : {
"bar" : newBar
}
})
})
在mongo
外壳中。 这在大型集合中可能不可行。 关键是在Int64
上使用.valueOf()
。 您可能想检查这是否不会溢出
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.