【问题标题】:Get all documents of a collection using Pymongo使用 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_',请尝试使用控制台检查连接性与数据库。

标签: python mongodb pymongo


【解决方案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
      猜你喜欢
      • 2017-04-15
      • 2018-01-09
      • 2021-03-30
      • 2023-03-28
      • 2021-03-27
      • 2020-08-09
      • 1970-01-01
      • 2018-04-03
      相关资源
      最近更新 更多