No necesita codificarlo en JSON/BSON si está utilizando un controlador. Si está utilizando el shell de MongoDB, deberá preocuparse cuando pegue el contenido.
Es probable que desee utilizar el controlador de Python MongoDB :
from pymongo import MongoClient
client = MongoClient()
db = client.test_database # use a database called "test_database"
collection = db.files # and inside that DB, a collection called "files"
f = open('test_file_name.txt') # open a file
text = f.read() # read the entire contents, should be UTF-8 text
# build a document to be inserted
text_file_doc = {"file_name": "test_file_name.txt", "contents" : text }
# insert the contents into the "file" collection
collection.insert(text_file_doc)
(Código no probado)
Si se aseguró de que los nombres de los archivos sean únicos, podría configurar el _id
propiedad del documento y recuperarlo como:
text_file_doc = collection.find_one({"_id": "test_file_name.txt"})
O bien, puede asegurarse de que file_name
la propiedad como se muestra arriba está indexada y hace:
text_file_doc = collection.find_one({"file_name": "test_file_name.txt"})
Su otra opción es usar GridFS, aunque a menudo no se recomienda para archivos pequeños.
Hay un iniciador aquí para Python y GridFS.