什么是file
在你的代码的例子吗?也就是说,你传递给GridFS.put的是什么?
添加元数据到一个GridFS的文件,通过额外的关键字参数来put
,as it shows in the PyMongo tutorial:
>>> fs.put(b'data', filename='foo', description='my description')
ObjectId('5825ea8ea08bff9df5059099')
现在的元数据与数据一起存储在GridFS的:
>>> gridout = fs.get(ObjectId('5825ea8ea08bff9df5059099'))
>>> gridout.description
u'my description'
引擎盖下,您可以看到PyMongo将元数据存储在MongoDB中的fs.files
集合中:
>>> for doc in db.fs.files.find()
... print(doc.get('description'))
...
my description
但访问GridFS数据的更好方法是使用PyMongo的GridFS API,而不是直接查询集合。
另一种方式来存储元数据是创建一个GridIn,设置字段,并调用close
:
>>> gridin = fs.new_file()
>>> gridin.filename = 'foo'
>>> gridin.description = 'my description'
>>> gridin.write(b'data')
>>> gridin.close()
这是一个很好的选择,如果你需要write
多次使用的数据块调用。
是的。所有这些都是正确的。一旦你写了'gridin.description ='我的desc',然后fs.put - 这将接受它,但不会改变描述字段 - 你不能使用gridfs系统更新grindin.description –