Как добавить поле в коллекцию fs.chunks в MongoDB с помощью Pymongo? - PullRequest
0 голосов
/ 22 октября 2018

Я использую 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, который содержит поля

  • _id
  • md5
  • chunkSize
  • длина
  • uploadDate

Итак, в моей папке с изображениями есть подпапки, и я хочу сохранить имя подпапок (хранится в переменной name ) в fs.files.

Как я могудобиться этого?

Я проверил документацию для put метод здесь .Требуется аргумент данных и ** kwargs.Я не знаю, может ли это помочь добавить новое поле, так как подробности отсутствуют.

1 Ответ

0 голосов
/ 22 октября 2018

Любой из параметров уровня файла, описанных в Спецификация Gridfs , может быть передан в качестве аргументов ключевого слова.

Например, вы можете установить имя файла, например,

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

Любые другие поля, недоступные в спецификации документа файла, могут быть сохранены в поле метаданных документа файла.
Поле метаданных может содержать любой тип, поэтому все, что вы храните здесь, остается на ваше усмотрение.

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