使用 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 导入 jsonpymongo

以上是关于使用 Pymongo 获取集合的所有文档的主要内容,如果未能解决你的问题,请参考以下文章

pymongo 用它的子字符串值更新字段集合中的所有文档

pymongo使用方法

当数据非常嵌套时如何使用 $gt 聚合文档和聚合 Pymongo

pymongo 用户密码连接

PyMongo:如何获取与任何可能的过滤器匹配的所有对象?

PyMongo 游标 batch_size