Mongodb GridFS 读取 return 空内容

Mongodb GridFS read return empty content

当我使用 mongodb 的 python api mongoengine 从 GridFS 读取文件时,我在第一次读取后得到了空内容。 这是我尝试过的:

class Test(Document):
    file=FileField()
a = Test(id=id)
print a.file.read() # has expected output
print a.file.read() # empty
print a.file.read() # empty`

所以我很好奇 GridFS 读取是如何工作的,在此先感谢您的任何提示:)

我们必须改进相应的 documentation,因为它是一个常见的混淆来源,但您需要 "rewind" 阅读流后。

即:

class Test(Document):
    file = FileField()

a = Test(id=id)
print a.file.read() # has expected output

a.file.seek(0)

print a.file.read()

请注意,这不是 MongoEngine 特有的,而是底层 GridFS/GridOut 类文件对象的行为方式