Title

MongoDB 管理笔记摘要

MongoDB 修改重命名字段名

通过命令行批量修改

修改一级字段名

CoamReSet:PRIMARY> db.TruckRoadsPath.update({},{$rename:{"Lng":"lng"}},{multi:true})
WriteResult({ "nMatched" : 2702582, "nUpserted" : 0, "nModified" : 2702582 })

修改二级字段名

CoamReSet:PRIMARY> db.TruckRoadsPath.update({},{$rename:{“PathInfo.Speed”:”PathInfo.speed”}},{multi:true})

出现以下错误,提示不能更新 PathInfo 为 null 的数据,提示更新失败,但检查数据发现已全部正确更新过来了

WriteResult({
        "nMatched" : 0,
        "nUpserted" : 0,
        "nModified" : 0,
        "writeError" : {
                "code" : 16837,
                "errmsg" : "cannot use the part (PathInfo of PathInfo.Speed) to traverse the element ({PathInfo: null})"
        }
})

正确的检查非 null 条件下的写法应该是:

CoamReSet:PRIMARY> db.TruckRoadsPath.update({"PathInfo":{$ne:null}},{$rename:{"PathInfo.State":"PathInfo.state"}},{multi:true})
WriteResult({ "nMatched" : 2702158, "nUpserted" : 0, "nModified" : 2702156 })

参考 How do you query this in Mongo? (is not null)


参考
如何在MongoDB 修改字段名称,重命名字段
Mongo docs - $rename

文章目录
  1. 1. MongoDB 管理笔记摘要
    1. 1.1. 通过命令行批量修改