mongodb - 如何更新一个 MongoDB 文档的 _id?

我想更新一个文档的 _id 字段。我知道这不是一个很好的做法。但由于某些技术原因,我需要更新它。

如果我尝试更新它,我会得到:

db.clients.update({ _id: ObjectId("123")}, { $set: { _id: ObjectId("456")}})

Performing an update on the path '_id' would modify the immutable field '_id'

并且更新被拒绝。如何更新?

最佳答案

您无法更新它。您必须使用新的 _id 保存文档,然后删除旧文档。

// 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")})

https://stackoverflow.com/questions/4012855/

相关文章:

node.js - 生产代码中的 Mongoose 索引

javascript - mongoose vs mongodb(nodejs模块/扩展),哪个更好

mongodb - 如何删除mongodb中的数组元素?

java - 运行集成测试时嵌入 MongoDB

json - 什么是 BSON,它与 JSON 究竟有何不同?

node.js - 使用 MongoClient v3.0 时 db.collection 不是函数

node.js - Mongoose (mongodb)批量插入?

node.js - 如何在 MongoDB 中按日期对集合进行排序?

javascript - Mongoose 子文档与嵌套模式

mongodb - Mongoose -- 强制集合名称