【问题标题】:How can I change the type of objects' _id field to ObjectId in the MongoDB shell?如何在 MongoDB shell 中将对象的 _id 字段类型更改为 ObjectId?
【发布时间】:2013-01-24 15:31:30
【问题描述】:

我在 MongoDB 数据库中有几个对象,其中 _id 字段被错误地分配了一个整数,我如何在 MongoDB shell 中将这些整数替换为 ObjectId?

此类对象的示例如下所示:

{ "_id" : 0 }

【问题讨论】:

    标签: mongodb mongodb-shell


    【解决方案1】:

    我找到的最佳解决方案是使用分配给_id 的 ObjectId 值将每个对象克隆到另一个对象,然后删除带有_id 整数的所有对象。我在 shell 中做了以下操作:

    // $type: 16 means int32
    > db.Roles.find({_id: {$type: 16}}).forEach(function (x) {
              x._id = ObjectId();
              db.Roles.save(x);
          })
    > db.Roles.remove({_id: {$type: 16}})
    

    【讨论】:

    • 是的,这可能是最好的方法,当然你不能更新 _id 字段所以你必须重新写出来。
    猜你喜欢
    • 2018-06-25
    • 2021-03-18
    • 2015-01-16
    • 2013-11-27
    • 2021-02-16
    • 2020-12-14
    • 2017-07-22
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多