繁体   English   中英

MongoDB - 将字段从 int32 转换为 int64

[英]MongoDB - Converting fields from int32 to int64

我在MongoDB有一个不同的大型数据集,其中有带有数字字段的文档。 由于数据导入中的一些问题,其中一些字段以int32 datatype结束,有些以int64 datatype

我需要将它们全部转换为 int32。 由于许多字段是嵌套的文档/数组,因此我无法使用MongoChefRoboMongo来编辑该字段并进行集合范围的替换。

我的下一个最佳选择是什么? 我是否需要编写一个脚本来循环遍历每个文档/字段并将它们显式转换为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM