如何在两个GridFS数据库间复制文件并保留元数据及_id?
在GridFS中复制文件并保留原元数据(含_id)
当需要从GridFS复制文件到测试库,且要求保留所有附加信息、元数据(如原_id)以维持和其他集合文档的关联时,直接使用put()方法传入文件流会自动生成新的ObjectId,无法满足需求。
解决方法
通过访问GridFS文件对象的_file属性,获取包含所有原元数据的字典,并用**解包的方式传入目标库的put()方法,即可完整保留原文件的所有信息。
问题代码(无法保留原_id)
import pymongo import gridfs # 省略数据库连接代码 fs1 = gridfs.GridFS(database=db1, collection="photos") buffer = fs1.find_one({"_id": photo["binaryId"]}) fs2 = gridfs.GridFS(database=db2, collection="photos") fs2.put(buffer)
修正后的代码(保留所有原元数据)
# 省略数据库连接及前面的查询代码 fs2.put(buffer, **buffer._file)
内容的提问来源于stack exchange,提问作者samusa
相关产品推荐
相关产品推荐

