使用 Pymongo 获取集合的所有文档
Posted
技术标签:
【中文标题】使用 Pymongo 获取集合的所有文档【英文标题】:Get all documents of a collection using Pymongo 【发布时间】:2016-10-22 20:03:39 【问题描述】:我想写一个函数在mongodb中返回mycollection
中包含的所有文档
from pymongo import MongoClient
if __name__ == '__main__':
client = MongoClient("localhost", 27017, maxPoolSize=50)
db=client.mydatabase
collection=db['mycollection']
cursor = collection.find()
for document in cursor:
print(document)
但是,函数返回:Process finished with exit code 0
【问题讨论】:
你试过在 find 方法中不使用大括号吗?试试 cursor = db.mycollection.find() 同样的结果:进程以退出代码 0 结束 好的,你是如何执行这个脚本的? (也请调整缩进) 我正在使用 Pycharm 2.0.3 好的,这是一个 pycharm 特定的使用问题,因为您的代码很好。还要检查您是否直接将脚本作为主要脚本运行,因为您的代码中有 _name_ == '_main_',请尝试使用控制台检查连接性与数据库。 【参考方案1】:它对我来说很好,尝试检查确切的数据库名称和集合名称。
并尝试从 db=client.mydatabase
更改为 db=client['mydatabase']
。
如果您的数据库名称无法使用属性样式访问(例如 test-database),您可以改用字典样式访问。 source!
【讨论】:
【参考方案2】:pymongo 创建一个游标。因此,您将获得光标“下方”的对象。要获取所有对象,请尝试:
list(db.collection.find())
这将强制光标遍历每个对象并将其放入 list()
玩得开心……
【讨论】:
【参考方案3】:我认为这将在您的程序中正常工作。
cursor = db.mycollection # choosing the collection you need
for document in cursor.find():
print (document)
【讨论】:
这里cursor = db.mycollection
不要将变量命名为光标,最好命名为collection
,只是不要混淆cursor.find():
应该是collection.find():
,它返回一个cursor
,可以是迭代以获取值。【参考方案4】:
这是从命令提示符运行时可以正常运行的示例代码。
from pymongo import MongoClient
if __name__ == '__main__':
client = MongoClient("localhost", 27017, maxPoolSize=50)
db = client.localhost
collection = db['chain']
cursor = collection.find()
for document in cursor:
print(document)
请检查集合名称。
【讨论】:
和我做的一样 我已经粘贴了上面的代码,确认代码没有问题。这与当地环境有关。另外,我提到它在命令提示符下工作正常。 我明白了。终于可以了 问题出在集合名上 谢谢 为什么要为此 minimal reproducible example 导入json
和 pymongo
?以上是关于使用 Pymongo 获取集合的所有文档的主要内容,如果未能解决你的问题,请参考以下文章