【问题标题】:Updating metadata for gridfs file object更新 gridfs 文件对象的元数据
【发布时间】:2016-12-10 02:12:56
【问题描述】:

我使用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)

但文档中似乎不存在该选项。我发现here(使用解决方案更新的问题)Java 驱动程序似乎提供了执行此类操作的选项,但在 python gridfs 中找不到它的等价物。

那么,如何使用 pymongo 用新计算的元数据值 qcResult 标记我的文件?我在documentation 中找不到它。

【问题讨论】:

    标签: python mongodb pymongo gridfs


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢 - 太好了。您知道为什么这不能作为 GridFS API 上的一种方法使用吗?是出于性能考虑吗?
    猜你喜欢
    • 2014-05-25
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    相关资源
    最近更新 更多