mongodb 修改字段类型

原创
2019/12/17 10:26
阅读数 172

在MongoDB的Collection中存在一些字段 reading 原本应该是string 类型,但是在写入时错误的写成了int,因此需要更改int类型为string类型。其中数据结构如下:

{
    "_id" : ObjectId("5d79097debeae9d530225b93"),
    "type" : 2,
    "name" : "ZhiHu",
    "intime" : NumberLong(1568213373),
    "data" : [ 
        {
            "top" : "1",
            "title" : "六种配色、5499 元起的 iPhone 11 系列发布,配置和性能如何?",
            "reading" : 72920000,
            "url" : "https://www.zhihu.com/question/345431917",
            "state" : ""
        }, 
        {
            "top" : "2",
            "title" : "男生找对象看重什么?",
            "reading" : 35880000,
            "url" : "https://www.zhihu.com/question/292443025",
            "state" : ""
        }, 
        {
            "title" : "如何评价谢娜辟谣与何老师关系破裂?",
            "reading" : 24700000,
            "url" : "https://www.zhihu.com/question/345356641",
            "state" : "",
            "top" : "3"
        }, 
        {
            "top" : "4",
            "title" : "如何看待 iPhone 11 发布会上苹果首次公开对比三星、华为等友商手机?",
            "reading" : 11130000,
            "url" : "https://www.zhihu.com/question/345432363",
            "state" : ""
        }
	]
}

解决方法:

在MongoDB的shell中执行如下语句即可:

db.zhihu.find({}).forEach(function(item){item.data.forEach(function(x){x.reading = String(x.reading); db.zhihu.save(item)})});

执行修改后的reading变成了string, 结构如下:

{
    "_id" : ObjectId("5d79097debeae9d530225b93"),
    "type" : 2,
    "name" : "ZhiHu",
    "intime" : NumberLong(1568213373),
    "data" : [ 
        {
            "top" : "1",
            "title" : "六种配色、5499 元起的 iPhone 11 系列发布,配置和性能如何?",
            "reading" : "72920000",
            "url" : "https://www.zhihu.com/question/345431917",
            "state" : ""
        }, 
        {
            "top" : "2",
            "title" : "男生找对象看重什么?",
            "reading" : "35880000",
            "url" : "https://www.zhihu.com/question/292443025",
            "state" : ""
        }, 
        {
            "title" : "如何评价谢娜辟谣与何老师关系破裂?",
            "reading" : "24700000",
            "url" : "https://www.zhihu.com/question/345356641",
            "state" : "",
            "top" : "3"
        }, 
        {
            "top" : "4",
            "title" : "如何看待 iPhone 11 发布会上苹果首次公开对比三星、华为等友商手机?",
            "reading" : "11130000",
            "url" : "https://www.zhihu.com/question/345432363",
            "state" : ""
        }
	]
}
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部