MongoDB - 将字段从int32转换为int64

时间:2017-01-16 06:36:01

标签: php python mongodb

我在MongoDB中有一个变化大的数据集,其中有数字字段的文档。由于数据导入中存在一些问题,其中一些字段最终位于int32 datatype,其中一些字段位于int64 datatype

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

我的下一个最佳选择是什么?我是否需要编写一个循环遍历每个文档/字段的脚本,并明确地将它们强制转换为NumberInt()。我可以在PHP or Python中执行此操作,但我想知道是否有办法在不编写额外代码的情况下执行此操作。

有没有可以做到的mongoshell魔法?如果任何Mongo Masters能给我任何见解,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于希望这样做并来到这里的任何人。您可以运行

db.foo.find().forEach(doc => {
    const newBar = bar.valueOf()
    db.foo.update({
        "_id" : doc._id
    }, {
        "$set" : {
            "bar" : newBar
        }
    })
})

mongo shell中。在大型馆藏中这可能不可行。关键是在.valueOf()上使用Int64。您可能要检查这不会溢出