【发布时间】:2014-06-04 12:24:59
【问题描述】:
mongodb 中的新功能,我的要求是更新整个集合的 _id 字段,如下所示:
原文:_id: ObjectId("4cc45467c55f4d2d2a000002")
必填:_id: 4cc45467c55f4d2d2a000002
我想从整个集合的所有文档的开头截断'ObjectId("',从结尾截断'")'。
此外,我在类似的帖子中看到了以下内容,但它都是手动的
// 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")})
谢谢
【问题讨论】:
-
为什么你需要这样做? MongoDB 使用 ObjectID 对象来识别记录。
-
我认为您不能操纵文档的默认 ID。正如它所说,它是 mongodb 创建的一个 Object id,用于唯一标识集合中的每个文档。但是,如果您想自定义它,您可以创建自己的 id。您可以使用主机、服务器、时间、日期等的各种组合生成与 mongo 默认生成的 id 有点相似的 id。或者,如果您想要相同的内容,您可以按照自己的方法进行。获取对象 id,然后获取 Object_id.valueOf(),然后更新该文档
-
你的问题真的没有意义。您要删除的
ObjectId("和")部分实际上不在您的文档中;当您查询时,它们只是在 shell 中显示为类型信息。
标签: mongodb mongodb-query