【问题标题】:Change field type for many documents in MongoDb更改 MongoDb 中许多文档的字段类型
【发布时间】:2019-08-18 17:58:53
【问题描述】:


我正在学习 MongoDb,我的收藏中有很多这样的文档:

我想将我的 cust_id 字段从 String 更新为 ObjectId。我可以使用 Compass 更改类型,但我有很多文档。我已经阅读了 Mongo 文档,但仍然不明白。你能告诉我如何在我的文档上执行此操作,以便我清楚地理解。
非常感谢!

【问题讨论】:

  • 你的mongodb版本是多少?
  • 我查了一下,它说 4.0.3
  • 这里可以使用$out聚合。

标签: mongodb


【解决方案1】:

这里有一个few posts 提示解决方案。

db.students.find().forEach(function(obj) {
  obj.cust_id = ObjectId(obj.cust_id);
  db.students.save(obj);
});

我在 Atlas 4.0.6 中对此进行了测试,效果很好。但是,我不知道这种技术在扩展到大型数据集时的效果如何。

只需将 students 替换为您自己的集合名称即可。

【讨论】:

    【解决方案2】:

    我尝过这个把字符串变成数字的功能,效果很好

    db.students.find().forEach(obj =>{
       obj.code_number= perseInt(obj.code_number);
       db.students.save(obj);
    });
    

    还使用结果创建一个新集合以保留原始数据并检查结果

    db.students.find().forEach(obj=> {
       obj.code_number= perseInt(obj.code_number);
       db.students_new.save(obj);
    });
    

    【讨论】:

    • 上述转换将值更新为double类型。如果您需要真正的Int32,请使用NumberInt() 而不是parseInt()
    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多