代码之家  ›  专栏  ›  技术社区  ›  Sociopath

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

  •  0
  • Sociopath  · 技术社区  · 6 年前

    我正在使用girdfs将图像存储在本地目录中的mongodb集合中。

    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文件 其中包含字段

    • 圣婴
    • MD5
    • 块大小
    • 长度
    • 上载

    因此,在“我的图像”文件夹中有子文件夹,我要保存子文件夹的名称(存储在 名称 变为 FS文件 .

    我怎样才能做到这一点?

    我检查了文件 put 方法 here . 它采用数据参数和**Kwargs。我不知道这是否有助于添加新字段,因为没有可用的详细信息。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Oluwafemi Sule    6 年前

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

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

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

    文件文档规范中不可用的任何其他字段都可以存储在文件文档元数据字段中。
    元数据字段可以容纳任何类型,因此您在此处存储的任何内容都由您负责。

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