"Update" mongodb 文档中的 _id
"Update" _id in mongodb document
PS: 我只是因为业务需要才这样做
我可以使用 mongosh 实现它,但由于有多个记录要更新,我正在尝试实现一个简单的 python 脚本来自动执行任务。
是否可以用 pymongodb 做到这一点?
// 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")})
我无法在 doc 变量中设置新 ID 以插入将反映旧文档的新文档。
谢谢
这是一个 pymongo 等价物:
from pymongo import MongoClient
from bson import ObjectId
db = MongoClient()['mydatabase']
old_doc_id = '4cc45467c55f4d2d2a000002'
new_doc_id = '4c8a331bda76c559ef000004'
doc = db.clients.find_one({'_id': ObjectId(old_doc_id)})
if doc is not None:
# set a new _id on the document
doc['_id'] = ObjectId(new_doc_id)
# insert the document, using the new _id
db.clients.insert_one(doc)
# remove the document with the old _id
db.clients.delete_one({'_id': ObjectId(old_doc_id)})
PS: 我只是因为业务需要才这样做
我可以使用 mongosh 实现它,但由于有多个记录要更新,我正在尝试实现一个简单的 python 脚本来自动执行任务。
是否可以用 pymongodb 做到这一点?
// 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")})
我无法在 doc 变量中设置新 ID 以插入将反映旧文档的新文档。
谢谢
这是一个 pymongo 等价物:
from pymongo import MongoClient
from bson import ObjectId
db = MongoClient()['mydatabase']
old_doc_id = '4cc45467c55f4d2d2a000002'
new_doc_id = '4c8a331bda76c559ef000004'
doc = db.clients.find_one({'_id': ObjectId(old_doc_id)})
if doc is not None:
# set a new _id on the document
doc['_id'] = ObjectId(new_doc_id)
# insert the document, using the new _id
db.clients.insert_one(doc)
# remove the document with the old _id
db.clients.delete_one({'_id': ObjectId(old_doc_id)})