问题标签 [pymongo-3.x]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
303 浏览

mongodb - pymongo 删除/更新命令返回

当我们在 mongodb 中删除某些内容或更新某些内容时,它会返回结果

我想知道如何访问 pymongo 中的这些字段以检查更新/删除是否成功或失败的天气。

0 投票
1 回答
268 浏览

mongodb - mongodb锁预防

在查看了 mongodb 文档和 pymongo API 一段时间后,我仍然不清楚我采取什么路线作为前进的方向(现在比我开始时更加困惑)。我的问题与锁有关……与其说我已经测试过并发现存在主要的并发问题,但我不想在事后遇到它们。

我有一个具有多个函数的 tkinter 脚本,它们都需要访问同一个文档集合,并且它们中的大多数都访问该集合中的同一个文档。

和被调用的子进程(在单独的脚本中),可能有多个实例:

那么,在这种情况下,只在每个函数中使用 client.close() 就足够了吗?

同样在 while 循环中:

这样就足够了,还是在这种情况下我应该寻找分片?或者我应该回到 SQL !

Mongodb 3.0.6 32 位,pymongo 3.03,python 2.7。

0 投票
1 回答
1032 浏览

python - Pymongo:如何确保仅从副本集中所需的主机(尤其是 SECONDARY)进行连接和读取

背景

mongoDB 生产集群(未分片)3 台主机。它们属于副本集 rs0

  • H1 - 初级
  • H2 - 中学
  • H3 - 中学

我正在尝试使用pymongo编写python脚本。这是一个生产集群,我希望脚本仅从H3 辅助副本集读取,以免对主副本造成负担,并使其免费用于常规活动。数据将从2000 个文档批次中名为“设备”的集合中获取。这应该会进一步减少读取操作的开销。

相关代码

还尝试通过提及集群中的所有主机以稍微不同的方式创建客户端,如下所示

问题

据我了解,上述客户端将从辅助副本集中读取。但是当我运行脚本并查看云管理器时,主要的 H1 显示页面错误从 ~15-20 增加到 ~600 并急剧增加。

环境

  • Mongo DB 3.0.3(MMAPv1 存储引擎)
  • Python 2.7.9
  • Pymongo 3.0.3
  • 操作系统 亚马逊 Linux
0 投票
2 回答
2114 浏览

django - 在 Django+uWsgi 项目中运行时,PyMongo 查找查询返回空/部分光标

Django我们使用& mongoDBPyMongo驱动程序)开发了一个 REST API 。问题是,在对 API 端点的某些请求中,PyMongo游标返回的部分响应包含的文档比它应该包含的要少(但它是一个完全有效的 JSON 文档)。

让我用一个我们的观点的例子来解释它:

我们确信有超过 8000 个文档与查询匹配,但在某些调用中,我们得到的结果少于 24 个(甚至为零)。我们调查的第一个问题是我们的代码中有多个MongoClient定义。通过解决这个问题,问题的发生次数减少了,但我们仍然在很多电话中遇到了这个问题。

在所有这些调查之后,我们设计了一个测试,我们同时向服务器发出 16 个异步请求。通过这种方法,我们可以重现问题。在这 16 个请求中,有 6-8 个请求有部分结果。运行此测试后,我们将uWsgi进程数减少到 6 个并重新启动服务器。所有结果都很好,但在服务器上再次施加重负载后,问题又开始了。此时,我们重新启动了 uwsgi 服务,一切正常。通过最后一个实验,我们现在有了一个线索,当 uwsgi 服务开始运行时,一切正常,但经过一段时间和高负载后,服务器又开始返回部分或空的结果。我们最近的调查是使用python manage.pywith运行 APIDEBUG=False,在这种情况下一段时间后我们又遇到了问题。

我们无法弄清楚问题是什么以及如何解决它。我们能想到的一个原因是 Django 在完成之前关闭了 pymongo 的连接。因为返回的结果是一个有效的 JSON。

我们的堆栈是:

  • nginx(未启用缓存)
  • uWsgi
  • MemCached(在调试过程中禁用)
  • Django(python 3 上的 v1.8)
  • PyMongo (v3.0.3)

非常感谢您的帮助。

更新:

蒙哥版本:

  • 我们正在运行单个mongod实例。没有分片/复制。
  • 我们正在使用此代码段创建连接:

    con = MongoClient('localhost', 27017)

更新 2

Pymongo 问题跟踪器中的主题线程

0 投票
0 回答
2076 浏览

python - ImportError:无法导入名称 MongoClient

我刚第一次安装和pymongo,马上就遇到了麻烦。在 MongoDB 网站上运行基本python 教程中的示例时,我立即得到以下响应:

代码如下所示:


我正在运行 python 2.7 和 pymongo 3.0.3

0 投票
1 回答
1638 浏览

python - 使用 python GridFS 检索文件元数据

我正在使用 Python 访问 GridFS,并且希望同时访问文件及其元数据。

Python 版本是 2.7,MongoDB 版本是 3.0.7。操作系统是 Ubuntu 14.04。

该文件存储如下:

并检索如下:

我期待 .metadata 成为元数据字典。retrieved_file._file存储我正在寻找的元数据以及其他元数据,但我认为访问以下划线开头的任何内容充其量只是一种黑客攻击。

那么,如何获取我最初设置的文件和元数据呢?

0 投票
1 回答
8349 浏览

python - 如何在不迭代的情况下计算 pymongo 聚合游标

我想在 pymongo 3.0+ 版中获取聚合游标中的记录总数。有没有办法在不遍历游标的情况下获得总计数?

有没有办法跳过上面的迭代?

0 投票
2 回答
5750 浏览

python - 在 pymongo 中使用 explain("executionStats") 进行查询

我对包括解释在内的请求有疑问。例如,以下请求效果很好:

解释方法的项目列表打印得很好。

但是,当我只需要 explain() 方法中的 executionStats 项时,请求如下:

我有以下错误:

有谁知道它是关于什么以及如何解决这个问题?

0 投票
1 回答
414 浏览

mongodb - 检查游标是否超时

是否可以检查数据库上打开的游标是否已超时?如果没有实际调用,该.alive属性似乎不会更新next(),但这也会导致光标位置前进,这是我不想要的。

背景:我正在将数据延迟加载到 Web 客户端,并且我将光标保持在服务器端打开,以便客户端可以从中请求更多数据。我让 Mongo 让游标超时,因为这对于用例来说已经足够了,并且简化了游标的有保证的垃圾收集。但是,这让我管理打开的游标引用 Python 端,我正在使用偶尔的垃圾回收周期。在这个周期中,我想扔掉任何已经在 Mongo 这边超时的游标。

0 投票
1 回答
73 浏览

mongodb - 如何在 pymongo 管道中创建日期时间对象?

我有一些代码在其中设置了以下管道:过滤器集合、项目年和月、按年和月分组,然后以 YYYY-MM-01 之类的日期时间对象结束。

示例文档:

示例代码:

目标: