问题标签 [pymongo]

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 回答
6274 浏览

python - 如何在 Python 中从 MongoDB 和 PyMongo 捕获 OperationFailure

我一直遇到一个问题,在我通过 pymongo 与 mongohq 的 mongodb 连接空闲一段时间(没有查询)后,它将超时。这很好,但数据库连接仅在 Django 应用程序启动时创建。看起来它重新连接正常,但它需要重新验证。当连接断开并重新连接,并且查询尝试运行时,它会引发一个OperationFailure和以下异常值database error: unauthorized for db [shanereustle] lock type: -1,告诉我它正在重新连接,但未进行身份验证。我已经导入OperationFailurepymongo.errors一直在尝试使用以下 try...except 但我似乎无法捕捉到错误并进行身份验证。

但由于某种原因,这并没有抓住。如果我只是在查询之前运行 db.authenticate() 而不是这段代码,它会重新验证并正常运行,但我不想在每个查询上重新验证。非常欢迎其他有关正确方法的建议,我感谢您的帮助。

谢谢!

0 投票
2 回答
1626 浏览

python - 为什么我的远程 MongoDB 连接需要对每个查询进行身份验证?

在这里和那里与不同的东西斗争之后,我终于能够让BottlePY在 Apache 上运行并运行一个由 MongoDB 驱动的站点。我习惯于运行 Django 应用程序,所以我将在我的问题中涉及到这一点。

问题

每次通过 BottlePY 加载页面时,都需要重新验证与位于 MongoHQ.com 上的 MongoDB 数据库的连接(这意味着它可能必须重新连接)。

我发现了什么

我在每个模型函数的顶部附加了一个db.keep_alive()函数,以便在运行任何 mongodb 查询之前,它会尝试运行一个简单的查询。如果失败,它会捕获 OperationFailure 或 AutoReconnect 错误,然后调用该db.authenticate()函数。在它重新验证后,我让它向日志数据库添加一个日志,以监控它需要多久重新验证一次。目前,它需要在每次页面加载时重新进行身份验证(这需要运行查询)。这是不对的。

与 Django 的区别

我在 django 中使用了同样的概念,发现数据库连接只需要在 10-15 分钟没有运行查询后进行身份验证。

我不明白为什么在 django 中创建一个 pymongo 连接与在瓶中创建一个不同,因为我使用的是相同的驱动程序、函数和方法。我也没有使用任何 ORMS 或类似的东西。

版本

  • 瓶子:0.9.dev
  • Django:1.2.1 最终版
  • PyMongo:1.8

感谢您的帮助!

更新:一位朋友能够快速浏览并注意到以下可能有助于回答我的问题。

似乎每个请求都在启动一个新的 Python 进程,而不是 Django,其中一个进程保持运行很长时间。

0 投票
4 回答
82841 浏览

mongodb - 使用 PyMongo 执行正则表达式查询

我正在尝试使用 PyMongo 对 MongoDB 服务器执行正则表达式查询。文档结构如下

我想获取与模式 *File 匹配的所有文件。我试着这样做

然而我什么也得不到。我是否遗漏了什么,因为根据 MongoDB 文档,这应该是可能的?如果我在 Mongo 控制台中执行查询,它工作正常,这是否意味着 API 不支持它或者我只是使用不正确?

0 投票
1 回答
1665 浏览

mongodb - 如何判断 MongoDB 中的查询是否有更多结果?

有没有一种首选的方式来查询带有限制的 mongo 并知道如果我用跳过/限制查询下一页是否会有更多结果?

我一直在做的是要求比我需要的多一个文档,将其从末尾切开,并使用该额外文档的存在来了解另一个查询是否会提供至少一个更多结果。

我觉得这是一个常见的用例(知道是否在网站上显示“更多结果”按钮),我觉得我目前的解决方案很愚蠢。

0 投票
1 回答
4889 浏览

python - pymongo:更高效的更新

我正在尝试将一些大文件(大约 400 万条记录)推送到 mongo 实例中。我基本上想要实现的是用文件中的数据更新现有数据。该算法看起来像:

因此,如果权重相同,则更新除 'tsUpdated' 之外的整行,如果该行不在 mongo 中,则添加新行或更新包括 'tsUpdated' 在内的整行......这就是算法

问题是:从 mongo 的角度来看,这可以更快、更容易、更高效地完成吗?(最终使用某种批量插入)

0 投票
1 回答
377 浏览

python - PyMongo:条件中具有 2d 地理空间索引的组返回错误

返回的错误是:
异常:不允许手动匹配器配置

这是我的代码:

当我从条件中删除位置时,它工作正常。如果我将查询更改为find它也可以正常工作,所以这是组的问题。

我究竟做错了什么?

0 投票
1 回答
8086 浏览

python - pymongo (python+mongodb) 删除集合/gridfs?

任何人都知道删除文档集合并删除 gridfs 数据库的命令吗?

0 投票
1 回答
1288 浏览

python - 如何更新 mongodb 集合

我的收藏结构是:

现在,我想update收藏col1

我在这里添加了另一个卷号,如何在 pymongo 中更新此集合。

0 投票
1 回答
901 浏览

python - 有64位版本的pymongo吗?

当我使用带有 64 位 python 的 easy_install 安装 pymongo 时,会发生异常。但它适用于 32 位 python。似乎只支持 32 位 python。

所以我想知道 64 位 pymongo 是否存在?

谢谢。

- - 更多细节 - -

0 投票
3 回答
1968 浏览

mongodb - MongoDB点符号查询

我是 MongoDB 的新手,我无法让我的点符号查询工作......

我正在将 pymongo 与在远程 Amazon EC2 实例上运行的 MongoDB 一起使用...

我没有编写大量 XML 解析代码来提取大量不同的数据,而是将 XML 转换为 JSON,将所有内容转储到 MongoDB,然后尝试使用点符号查询提取我想要的数据片段......

数据被转换成 JSON 并插入到 Mongo 中。我可以看到所有的插入(来自 python shell)......

对于 db.feed.find() 中的项目:项目

这是一个返回的示例项目...

所以我试图做这样的查询,但我没有得到任何结果......

db.feed.find_one({"message.category.text": "Scores"})

执行这些类型的查询并将整个文档返回到响应中的正确方法是什么?谢谢!