【问题标题】:How to make pymongo's find() return a list?如何让 pymongo find() 返回一个列表?
【发布时间】:2012-10-24 00:38:51
【问题描述】:

Pymongo 返回一个光标,我可以遍历结果并将其文档附加到列表中。有没有办法直接在列表中获取结果文档? 谢谢

【问题讨论】:

    标签: pymongo


    【解决方案1】:

    以下代码会将整个结果集(Cursor)转换为list

    myresults = list(mydb.mycollection.find())
    

    这适用于相对较小的结果集,因为您将所有内容都拉入内存。

    【讨论】:

    • 如果我有更大的结果怎么办?有什么推荐的?
    • @Jaziel_Inc 如果它很大,那么您可以对其进行迭代,例如first_doc = next( mydb.mycollection.find() ),其中first_doc 是字典
    • 更多行:c = mydb.mycollection.find(); first_5_rows = [next(c) for _ in range(5)]
    • @AlexG 谢谢,所以另一种选择是遍历光标。
    • 谢谢!花了太长时间才弄清楚您只能迭代 Cursor 一次,否则需要将其转换为列表!
    【解决方案2】:

    除了上面的答案之外,一种快速创建一个特定字段的所有结果列表的方法是:

    myResults = list(mydb.mycollection.find({},{"FieldName":1,"-id":False}))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 2013-11-18
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      相关资源
      最近更新 更多