我正在使用GirdFs将本地目录中的图像存储到MongoDB Collection。
from pymongo import MongoClient
from imutils import paths
import gridfs
client = MongoClient("127.0.0.1", 27017)
db = client.dbs
fs = gridfs.GridFS(db)
imagePaths = list(paths.list_images("images"))
for i, imagePath in enumerate(imagePaths):
name = imagePath.split(os.path.sep)[-2] # to get the name of the directory
fs.put(open(imagePath, 'rb'))
上面的代码创建两个集合fs.files
和fs.chunks
。
它在fs.files
中创建包含字段的元数据
所以在我的图像文件夹中有子文件夹,我想将子文件夹的名称(存储在 name 变量中)保存到fs.files
中。
我该如何实现?
我检查了put
方法here的文档。它需要数据参数和** kwargs。我不知道这是否可以帮助添加新字段,因为没有可用的详细信息。
答案 0 :(得分:1)
Gridfs Specification中描述的任何文件级选项都可以作为关键字参数传递。
例如,您可以像这样设置文件名
fs.put(open(imagePath, 'rb'), filename="foo")
文件文档规范中不可用的任何其他字段都可以存储在文件文档元数据字段中。
元数据字段可以保存任何类型,因此您在此处存储的内容均由您自己决定。
fs.put(open(imagePath, 'rb'), metadata={"subfolder": "foo-subfolder"})