【发布时间】:2013-01-24 15:31:30
【问题描述】:
我在 MongoDB 数据库中有几个对象,其中 _id 字段被错误地分配了一个整数,我如何在 MongoDB shell 中将这些整数替换为 ObjectId?
此类对象的示例如下所示:
{ "_id" : 0 }
【问题讨论】:
标签: mongodb mongodb-shell
我在 MongoDB 数据库中有几个对象,其中 _id 字段被错误地分配了一个整数,我如何在 MongoDB shell 中将这些整数替换为 ObjectId?
此类对象的示例如下所示:
{ "_id" : 0 }
【问题讨论】:
标签: mongodb mongodb-shell
我找到的最佳解决方案是使用分配给_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 字段所以你必须重新写出来。