更新 gridfs 文件对象的元数据

Updating metadata for gridfs file object

我使用GridFS如下:

connection = MongoClient(host='localhost')
db = connection.gridfs_example
fs = gridfs.GridFS(db)
fileId = fs.put("Contents of my file", key='s1')

在文件最初存储在 GridFS 中之后,我有一个过程可以计算与文件内容相关的附加元数据。

def qcFile(fileId):
    #DO QC
    return "QC PASSED"

qcResult = qcFile(fileId)

如果我能做到就好了:

fs.update(fileId, QC_RESULT = qcResult)

但是文档中似乎不存在该选项。我发现 (用解决方案更新了问题)Java 驱动程序似乎提供了一个选项来做这样的事情,但在 python gridfs 中找不到它的等价物。

那么,如何使用 pymongo 使用新计算的元数据值标记我的文件 qcResult?我在 documentation.

中找不到它

GridFS 将文件存储在两个集合中: 1. 文件集合:存储文件的元数据 2. chunks collection: 存储文件的二进制数据

您可以侵入文件集合。文件集合的名称是 'fs.files',其中 'fs' 是默认存储桶名称。

因此,要更新 QC 结果,您可以这样做:

db.fs.files.update({'_id': fileId}, {'$set': {'QC_RESULT': qcResult}})