pymongo 无法检索文件

Posted

技术标签:

【中文标题】pymongo 无法检索文件【英文标题】:pymongo not able to retrieve files 【发布时间】:2014-09-23 19:27:22 【问题描述】:

我正在使用 mongodb (GridFS) 来存储文件 (zip) 并尝试使用 python 的“pymongo”检索它们,但它没有按预期工作我无法理解如何检索文件我已经添加...

下面是我从 IDLE (Python 3.4.1) 运行的代码

>>> db = Connection(port=31000, host="localhost").fs
>>> db.name
'fs'
>>> db.validate_collection
<bound method Database.validate_collection of Database(Connection('localhost', 31000), 'fs')>
>>> blob_store = gridfs.GridFS(db, collection='bstore')
>>> local_db = dict()
>>> k = r'd:\test\my-scripts.zip'
>>> local_db[k] = blob_store.put(open(k, 'rb'))

[** File is saved, i checked using robomongo **]

>>> blob_store.exists(filename=k)
False
>>> blob_store.exists("53da7cb1b3b44b13e0e27721")
False
>>> local_db
'd:\\test\\my-scripts.zip': ObjectId('53da7cb1b3b44b13e0e27721')
>>> blob_store.list()
[]
>>> b = gridfs.GridFS(db, collection='bstore.files')
>>> b.list()
[]
>>> x = blob_store.get(Objectid("53da7cb1b3b44b13e0e27721"))
Traceback (most recent call last):
 File "<pyshell#20>", line 1, in <module>
 x = blob_store.get(Objectid("53da7cb1b3b44b13e0e27721"))
NameError: name 'Objectid' is not defined
>>> local_db
'd:\\test\\my-scripts.zip': ObjectId('53da7fd0b3b44b13e0e2772a')
>>> blob_store.find()
<gridfs.grid_file.GridOutCursor object at 0x0000000003DC1828>
>>> a = blob_store.find(ObjectId("53da7fd0b3b44b13e0e2772a"))
Traceback (most recent call last):
   File "<pyshell#29>", line 1, in <module>
   a = blob_store.find(ObjectId("53da7fd0b3b44b13e0e2772a"))
NameError: name 'ObjectId' is not defined

现在我不确定如何从 mongo 检索文件?我错过了什么明显的东西吗?

谢谢

【问题讨论】:

【参考方案1】:

需要导入 ObjectId 符号:

from bson import ObjectId

那么你的代码应该可以工作了。

【讨论】:

感谢这项工作,但我想知道为什么我没有一起被包含在库中。

以上是关于pymongo 无法检索文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PyMongo 基于 Flask URL 变量检索 MongoDB 中的记录?

Pymongo 无法连接到数据库:pymongo.errors.ServerSelectionTimeoutError: connection closed

无法使用 PyMongo 连接 Atlas 集群

在 PyMongo 中使用 .sort

无法使用 pymongo 删除 mongodb 文档

带有日期时间的 MongoDB / Pymongo 查询