You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在两个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:55:15