如何在MongoDB shell中将对象的_id字段类型更改为ObjectId?

时间:2013-01-24 15:31:30

标签: mongodb mongodb-shell

我在MongoDB数据库中有一些对象,其中_id字段被错误地分配了一个整数,我怎样才能在MongoDB shell中用ObjectId替换这些整数?

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

{ "_id" : 0 }

1 个答案:

答案 0 :(得分:3)

我找到的最佳解决方案是将每个对象克隆到另一个对象,并将ObjectId值分配给_id,然后使用_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}})