问题标签 [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 回答
580 浏览

python - pymongo 3如何使用一个socket连接MongoDB?

我想在多线程中使用一个套接字连接到 MongoDB。

代码只有一个套接字,PyMongo 的版本是 2.2rc。

引用 PyMongo 3 的文档

connect选项已添加。

start_request和方法以及选项都被in_request删除。end_requestauto_start_request

copy_database方法已删除,请参阅copy_database 示例 以获取替代方法。

MongoClient.disconnect()方法被删除;它是 的同义词 close()

布尔值connect不起作用。

0 投票
2 回答
8044 浏览

mongodb - pymongo - TypeError:文档必须是 dict、bson.son.SON 或其他继承自 collections.MutableMapping 的类型的实例

我正在写入数据以MongoDB使用pymongo.

执行写操作时收到此错误。

如果我打印数据,并通过insert_one()调用复制它,则信息是用 shell 写入的。我已经尝试将变量转换为str,但我不确定它是如何格式错误的,就像我复制打印行并执行操作一样,它被添加了。这让我怀疑 JSON 对象的格式没有问题,但它的编码或其某种变体,或者返回的 JSON 对象的小语法。

0 投票
28 回答
80533 浏览

python - 为什么 PyMongo 3 给出 ServerSelectionTimeoutError?

我在用着:

  • Python 3.4.2
  • PyMongo 3.0.2
  • mongolab 运行 mongod 2.6.9
  • uWSGI 2.0.10
  • 樱桃派 3.7.0
  • nginx 1.6.2

uWSGI 启动参数:

我设置了我的 MongoClient 一次:

我尝试将 JSON 字典保存到 MongoDB:

它通过执行与 mongodb 相同的代码路径的单元测试来工作。但是,当我使用 HTTP POST 通过 CherryPy 和 uWSGI 执行时,我得到了这个:

为什么我在通过 CherryPy 和 uWSGI 运行时会看到这种行为?这可能是 PyMongo 3 中的新线程模型吗?

更新:

如果我使用 CherryPy 内置服务器在没有 uWSGI 和 nginx 的情况下运行,则insert_one()可以。

更新 1/25 下午 4:53 EST:

在 PyMongo 中添加一些调试后,似乎topology._update_servers()知道服务器“myserver-a.mongolab.com”的 server_type = 2。但是server_description.known_servers(),服务器“myserver.mongolab.com”的 server_type = 0

这导致以下堆栈跟踪:

0 投票
3 回答
4694 浏览

python - pymongo==3.0.3: ImportError: No module named connection

我刚刚升级到pymongo==3.0.3via pip install --upgrade pymongo,我被淹没了ImportError

0 投票
2 回答
4473 浏览

performance - 有没有办法跳过 Pymongo 3.0 中 insert_many 的现有 _id?

我正在更新一个包含数百万个文档且 _id 冲突少于 10 个的数据库。

我目前正在使用 PyMongo 模块通过 insert_many 进行批量插入:

  1. 查询db看_id是否存在
  2. 如果 _id 不存在,则将文档添加到数组中
  3. 使用 insert_many 插入数据库,一次插入 1000 个文档。

几百万个文档中只有大约 10 个冲突,我目前正在为每个 _id 查询数据库。我认为如果我可以减少查询过程,我可以将整体插入时间减少一两天。

是否有类似于 upsert 的东西,如果它不存在,它可能只插入一个文档?

0 投票
3 回答
7709 浏览

python - 使用 pymongo 和烧瓶将数据插入

当我单击提交按钮时,我收到一条错误消息:

“TypeError:'Collection' 对象不可调用。如果您打算在 'Database' 对象上调用 'insert' 方法,它会失败,因为不存在这样的方法。”

这是我的 signin.py 代码:

我的 html 文件代码在这里:

0 投票
1 回答
3658 浏览

mongodb - mongodb:用一个或多个元素替换数组中的元素

给定一个集合,例如:

我想用“樱桃”和“日期”替换所有“香蕉”实例。所以结果集合将是:

我通过 pymongo 使用的一种方法:

我正在寻找一种更有效的方法,使用更新命令 $pull/remove 匹配的元素并使用 $each 修饰符 $push 来插入新元素。但是我很难找到要执行推送操作的数组的 $position。另一个需要注意的是,我想为新水果保留旧水果的位置。即第一个新水果将与旧水果具有相同的位置。

0 投票
1 回答
72 浏览

python - 通过索引获取数组的不同聚合元素

我得到了输出:

如何仅使用数组的第二个元素执行此操作?我需要类似的东西:

0 投票
1 回答
58 浏览

mongodb - 在 python 中为 mongodb 编写 shell 脚本时出错在用户 ID 调用的情况下

它应该返回该特定值的用户 ID 计数,但它会弹出错误为

名称错误:名称 objectid 未定义。

当我尝试使用时:

我有同样的错误

0 投票
1 回答
276 浏览

sockets - 改进 PyMongo socket recv

我使用 cProfile 在我的代码中进行了一些分析(使用 PyMongo 3.0.3 和大量的批量操作),结果发现很多时间都花在了套接字上:

14006 68.823 0.005 68.823 0.005 {method 'recv' of '_socket.socket' objects}

我找到了这个有点相关的答案,解决方案很简单。有什么方法可以将TCP_NOWAIT选项传递给PyMongo而无需更改库代码?