如何快速获取MongoDB pymongo的所有文档

2024-04-06

目前我通过在 pymongo 中迭代游标来获取文档,例如:

for d in db.docs.find():
    mylist.append(d)

作为参考,对同一组数据(700 万条记录)执行 fetchall 大约需要 20 秒,而上述方法需要几分钟。

有没有更快的方法在 mongo 中读取批量数据?抱歉,我是 mongo 新手,如果需要更多信息,请告诉我。


使用 $natural 排序将绕过索引并按照文档存储在磁盘上的顺序返回文档,这意味着 mongo 不必在磁盘上进行随机读取。

https://docs.mongodb.com/manual/reference/method/cursor.sort/#return-natural-order https://docs.mongodb.com/manual/reference/method/cursor.sort/#return-natural-order

如果您想使用查询,性能会严重下降。您永远不应该依赖 FIFO 排序。 Mongo 允许自己在其存储层内移动文档。如果您不关心顺序,那就这样吧。

此排序是内部实现功能,您应该 不依赖于 i 中的任何特定结构

for d in db.docs.find().sort( { $natural: 1 } ):
    mylist.append(d)

在 python 中,你还想使用EXHAUST游标类型,告诉 mongo 服务器流回结果,而无需等待 pymongo 驱动程序确认每个批次

https://api.mongodb.com/python/current/api/pymongo/cursor.html#pymongo.cursor.Cursor类型.EXHAUST https://api.mongodb.com/python/current/api/pymongo/cursor.html#pymongo.cursor.CursorType.EXHAUST

请注意,它永远不会像 shell 一样快。在 mongo/bson->pymongo->you 之间移动数据最慢的方面是 python 中的 UTF8 字符串解码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何快速获取MongoDB pymongo的所有文档 的相关文章

  • 如何让“conda”安装程序查找“PyPi”包

    我试图使用conda http conda pydata org docs using pkgs html managing packages包管理器来安装我的 Python 包 最近 我遇到了 Anaconda org 存储库中不存在我需
  • 从所有数据帧列中删除子字符串

    我有一个单词列表 大约 1000 个单词 我称之为负面单词 CAST ARTICLES SANITARY JAN CLAUSES SPECIAL ENDORSEMENT 我很快就会用这个单词列表制作一个数据框 我还有一个数据框 看起来像 F
  • App Engine 上的 Django 与 webapp2 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何替换Python字符串中的正确字母

    任务是 您的任务是纠正数字化文本中的错误 您只需处理以下错误 S 被误解为 5 O 被误解为 0 I 被误解为 1 我的代码 def correct string for i in string if 5 in string string
  • 如何同时运行多个功能[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有以下代码 my func1 my func2 my func3 my func4 my func5 是否可以同时计算函数的数据 而
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • 如何在 Pandas Python 中按 id 对行进行排名

    我有一个像这样的数据框 id points1 points2 1 44 53 1 76 34 1 63 66 2 23 34 2 44 56 我想要这样的输出 id points1 points2 points1 rank points2
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • 使用 Pandas 从 csv 文件读取标题信息

    我有一个包含 14 行标题的数据文件 在标头中 有经纬度坐标和时间的元数据 我目前正在使用 pandas read csv filename delimiter header 14 读取文件 但这只是获取数据 我似乎无法获取元数据 有人知道
  • 获取 Keras model.summary() 作为表

    我在 Keras 中创建了相当大的模型 我正在用 LaTeX 写一篇关于它的文章 为了很好地描述 LaTeX 中的 keras 模型 我想用它创建一个 LaTeX 表 我可以手动实现它 但我想知道是否有任何 更好 的方法来实现这一点 我四处
  • 我可以用关闭的文件对象做什么?

    当您打开文件时 它存储在一个打开的文件对象中 该对象使您可以访问该文件的各种方法 例如读取或写入 gt gt gt f open file0 gt gt gt f
  • 无法通过 Android 应用程序访问我的笔记本电脑的本地主机

    因此 我在发布此内容之前做了一项研究 我发现的解决方案不起作用 更准确地说 连接到我的笔记本电脑的 IPv4192 168 XXX XXX 没用 连接到10 0 2 2 加上端口 不起作用 我需要测试使用 Django Rest 框架构建的
  • multiprocessing.Queue 中的 ctx 参数

    我正在尝试使用 multiprocessing Queue 模块中的队列 实施 https docs python org 3 4 library multiprocessing html exchang objects Between p
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 在Python中使用pil读取tif图像时出现值错误?

    我必须读取尺寸的tif图像2200 2200并输入 uint16 我将 PIL 库与 anaconda python 一起使用 如下所示 from PIL import Image img Image open test tif img i
  • tf.print() vs Python print vs tensor.eval()

    看来在Tensorflow中 至少有三种方法可以打印出张量的值 我一直在读here https www freecodecamp org news debugging tensorflow a starter e6668ce72617 an
  • 为什么从 openAI 导入 Universe 模块时出现“无效语法”错误

    当我导入时universe来自 openAI 的模块 我收到以下错误 Traceback most recent call last File
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • 从 Django 运行 shell 命令

    我正在 Django 中开发一个网页 使用 apache 服务器 需要调用 shell 命令来启用 禁用一些守护进程 我尝试这样做 os system service httpd restart 1 gt HOME out 2 gt HOM
  • 使用 python 将 CSV 文件上传到 Microsoft Azure 存储帐户

    我正在尝试上传一个 csv使用 python 将文件写入 Microsoft Azure 存储帐户 我已经发现C sharp https blogs msdn microsoft com jmstall 2012 08 03 convert

随机推荐

  • MimeMessage.saveChanges 真的很慢

    由于包含以下内容 以下测试的执行时间约为 5 秒m saveChanges import org junit Before import org junit Test import javax mail MessagingException
  • 哪些 C99 功能被认为是有害的或不受支持的 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我通常在 C89 中编写 C 代码 现在使用 C99 的一些功能 例如intxx t or VA ARGS or snprintf 非常有用 甚
  • PHP 的 require 和 include 有什么区别?

    我知道PHP require require一次 include和includeonce的基本用法 但我对何时应该使用它们感到困惑 示例 我有 3 个文件 例如 settings php database php 和 index php 在
  • Cocoapods 不工作 Xcode 9.2

    Cocoapods 已安装但无法工作 Xcode 9 2 我尝试了这些解决方案https github com CocoaPods CocoaPods issues 3777 https github com CocoaPods Cocoa
  • 在调试中禁用应用程序洞察

    如何在使用调试配置时自动禁用应用程序洞察并仅在发布时启用它 是否可以在不创建另一个仅用于调试的仪器密钥的情况下执行此操作 I have trackevent语句分散在代码中 将它们包含在调试预处理器检查中并不是理想的解决方案 我当前的解决方
  • 如何告诉 find 命令转义文件名中的空格字符?

    我有一个单行 find 命令 它递归地检查并打印出在特定时间范围内创建的特定文件类型的大小 所有者和名称 但在结果中 给出文件名列 直到目录或文件名中的第一个空格字符为止 有没有办法在这个单一命令中解决这个问题 而无需在 bash 中编写任
  • 在android中使用OpenGL在按钮上单击绘制形状

    作为 android OpenGL 部分的新手 我已经下载了现场给出的示例使用 OpenGL ES 显示图形 http developer android com training graphics opengl index html so
  • Chrome 中的 Javascript 执行跟踪 - 如何进行?

    我在网站上加载了约 100 200 个 JavaScript 函数 我想确定当我单击 Google Chrome 中的一项或多项时执行什么 JavaScript 函数 我如何使用 Chrome Web 开发人员工具来做到这一点 谢谢 一种简
  • 基于流的应用程序中的受控/手动错误/恢复处理

    我正在开发一个基于的应用程序Apache Flink 它利用Apache Kafka用于输入和输出 该应用程序可能会被移植到Apache Spark 所以我也将其添加为标签 问题仍然相同 我要求通过 kafka 接收的所有传入消息必须按顺序
  • Cloud Firestore 中 get() 和 onSnapshot() 之间的区别

    我正在从 Firebase 的 Cloud Firestore 读取一些数据 但我已经看到了几种方法来做到这一点 我看到的示例使用了 get 和 onSnapshot 函数 如下所示 db collection cities doc SF
  • 测试:单元、集成、其他,分离的必要性是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 对于问题我是单元测试还是集成测试 https stackoverflow com questions 516572我已经回答了 有点挑衅 进行测
  • 如何检查$compile是否已经完成?

    我正在编写一个函数 可以根据 HTML 模板和给出的一些信息创建电子邮件模板 为此 我正在使用 compile角的函数 只有一个问题我似乎无法解决 该模板由一个基本模板和无限数量的ng include的 当我使用 最佳实践 时 timeou
  • AngularJS:带去抖功能的 $watch

    我有以下代表搜索字段的 html
  • 错误:CFBundleVersion 必须高于之前上传的版本

    我想上传我的应用程序的新版本 我在 iTunes 中的应用程序的旧版本是 2 1 我正在上传新版本 2 2 但是当我尝试验证我的应用程序时 它会给出错误 CFBundleVerion must be higher than the prev
  • 如何在 R 中的稀疏矩阵中查找并命名连续的非零条目?

    我的问题在概念上很简单 我正在寻找一种计算有效的解决方案 我自己的解决方案附在最后 假设我们有一个可能非常大的稀疏矩阵 如下左图所示 并且想要用单独的代码 命名 连续非零元素的每个区域 请参见右侧的矩阵 1 1 1 1 1 1 1 1 1
  • Jquery:检查第一个实例

    在获取奇怪的输出并将其转换为可读的剧本格式时遇到一些麻烦 这是 HTML div p class actor John p p class line I want to buy milk p p class actor John p p c
  • MySQL - 如何将“使用连接缓冲区(块嵌套循环)”添加到查询中?

    当我在笔记本电脑上运行查询时 执行时间大约需要一秒钟 但在生产环境中 查询会持续 57 秒 并且它会导致应用程序崩溃 这是用 Ruby On Rails 编写的 我运行这个查询EXPLAIN并发现在我的笔记本电脑上是在执行的查询中的一张表上
  • 面试期间用于编码测试的 OOP 问题 [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 作为第二次采访 我让人们坐下来编写代码 我尝试使问题真正独立于技术 我遇到的编程问题并没有真正锻炼人们的面向对象能力 我倾向于尝试在
  • 我们如何强制将邮箱项目持久保存到 EWS?

    Note 这一特殊问题对我们的客户产生重大影响 这会转化为巨大的业务影响 对收入产生直接影响 TL DR 当用户在撰写电子邮件草稿时与我们的加载项交互时 我们的 Outlook Office 加载项如何最大限度地缩短电子邮件草稿发送之前所需
  • 如何快速获取MongoDB pymongo的所有文档

    目前我通过在 pymongo 中迭代游标来获取文档 例如 for d in db docs find mylist append d 作为参考 对同一组数据 700 万条记录 执行 fetchall 大约需要 20 秒 而上述方法需要几分钟