在mongodb中为整个集合更新\u id

在mongodb中为整个集合更新\u id,mongodb,mongodb-query,Mongodb,Mongodb Query,在mongodb中,我的新要求是更新整个集合的_id字段,如下所示: 原始名称:\u id:ObjectId(“4cc45467c55f4d2d2a000002”) 必需:\u id:4cc45467c55f4d2d2a000002 我想截断整个集合中所有文档末尾的ObjectId(“'from start and'”) 此外,我在一篇类似的文章中看到了下面的内容,但它都是手册,我有数百万行/文档希望有一个功能或一些事情来完成所有文档 // store the document in a var

在mongodb中,我的新要求是更新整个集合的_id字段,如下所示:

原始名称:
\u id:ObjectId(“4cc45467c55f4d2d2a000002”)

必需:
\u id:4cc45467c55f4d2d2a000002

我想截断整个集合中所有文档末尾的ObjectId(“'from start and'”)

此外,我在一篇类似的文章中看到了下面的内容,但它都是手册,我有数百万行/文档希望有一个功能或一些事情来完成所有文档

// store the document in a variable
doc = db.clients.findOne({_id: ObjectId("4cc45467c55f4d2d2a000002")})
// set a new _id on the document
doc._id = ObjectId("4c8a331bda76c559ef000004")
// insert the document, using the new _id
db.clients.insert(doc)
// remove the document with the old _id
db.clients.remove({_id: ObjectId("4cc45467c55f4d2d2a000002")})

谢谢

MongodDB根本不允许修改
\u id
字段。因此,一旦创建了文档,就无法更改
\u id
的值

如果您尝试更新
\u id
时,错误消息是:
Mod on\u id not allowed


如果要更改
\u id
的值(如您已经找到的),则必须将文档复制到变量,更改
\u id
,插入新文档并删除旧文档。没有别的办法

你为什么要这么做?MongoDB使用ObjectID对象来标识记录。我认为您无法操纵文档的默认id。正如它所说的,它是mongodb创建的一个对象id,用于唯一标识集合中的每个文档。但是,您可以创建自己的id,以便进行自定义。您可以使用不同的主机、服务器、时间、日期等组合生成与mongo默认生成的id类似的id。或者,如果您想要相同的内容,可以使用您的方法。获取对象id,然后获取对象\u id.valueOf(),然后更新该文档您的问题没有真正意义。您要删除的
ObjectId(“
”)
部分实际上并不在您的文档中;当您查询shell时,它们只是作为类型信息显示在shell中。的可能重复项