gpt4 book ai didi

python - 如何通过文件元数据从 GridFS 中删除图像文件?

转载 作者:可可西里 更新时间:2023-11-01 10:43:55 28 4
gpt4 key购买 nike

我有一张包含以下元数据的图片:

> db.fs.files.find().pretty()
{
"_id" : ObjectId("4576874577342672346"),
"chunkSize" : 262144,
"user_name" : "my name",
"filename" : "image.jpg",
"length" : 7103,
"uploadDate" : ISODate("2014-01-23T13:31:48.155Z"),
"user_email" : "email@email.com",
"md5" : "1234567890"
}
>

我想从 Python (PyMongo) 中删除图像。

关于delete() 的文档似乎规定delete() 函数中唯一接受的参数是file_id:

http://api.mongodb.org/python/current/api/gridfs/#gridfs.GridFS.delete

以编程方式,我有以下可用值可以在文件元数据中匹配:

  • 用户名
  • 文件名
  • 用户邮箱

我该怎么做:

  • 获取 file_id(必要时通过使用上述值)或
  • 是否根据 file_id 以外的元数据字段删除文件?

此外,我目前只测试单个 block 文件,如果将来与更大的文件交互,通过 file_id 或其他元数据删除是否也会删除所有关联的 block ?

最佳答案

这是我刚刚尝试过的方法,没有考虑是否有必要或最好的方法,但它有效。

因此,通过编程方式,我可以通过查询文件元数据获得 _id:

Python 外壳:

>>> import pymongo
>>> import os
>>> hostname = os.environ['OPENSHIFT_MONGODB_DB_URL']
>>> conn = pymongo.MongoClient(host=hostname)
>>> db = conn.grid_files
>>> collection = db.fs.files
>>> result = collection.find_one({"user_email":"email@email.com","name":"my name","filename":"image.jpg"})
>>> result['_id']
ObjectId('52e119c47091447a86891d98')

# now use the _id to delete the file
>>> files_id = result['_id']
>>> import gridfs
>>> fs = gridfs.GridFS(db)
>>> fs.delete(files_id)

关于python - 如何通过文件元数据从 GridFS 中删除图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21311540/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com