如何使用Pymongo在MongoDB中的fs.chunks集合中添加字段?

时间:2018-10-22 10:47:43

标签: python mongodb pymongo

我正在使用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.filesfs.chunks。 它在fs.files中创建包含字段的元数据

  • _id
  • md5
  • chunkSize
  • 长度
  • uploadDate

所以在我的图像文件夹中有子文件夹,我想将子文件夹的名称(存储在 name 变量中)保存到fs.files中。

我该如何实现?

我检查了put方法here的文档。它需要数据参数和** kwargs。我不知道这是否可以帮助添加新字段,因为没有可用的详细信息。

1 个答案:

答案 0 :(得分:1)

Gridfs Specification中描述的任何文件级选项都可以作为关键字参数传递。

例如,您可以像这样设置文件名

fs.put(open(imagePath, 'rb'), filename="foo")

文件文档规范中不可用的任何其他字段都可以存储在文件文档元数据字段中。
元数据字段可以保存任何类型,因此您在此处存储的内容均由您自己决定。

fs.put(open(imagePath, 'rb'), metadata={"subfolder": "foo-subfolder"})