3

我正在将我的 python 脚本从使用 pymongo 切换到使用 mongoengine。以前,我有这个电话:

client_count = db.command("serverStatus")["connections"]['current'] - 1

但我想使用 mongoengine 的包装器来获取当前连接的数量。我查看了server-status和 mongoengine文档,但找不到用于拉取服务器变量的等效调用。

我想切换到 mongoengine,因为我们正在使用它的 ODM 功能,并且我们想减少冗余。

对此有任何指示吗?如果有的话,正确的语法是什么?谢谢。

与此同时,我们将只使用 pymongo 来获取正确的数据,而使用 mongoengine 来处理其他所有事情。

4

2 回答 2

6

没有 Mongoengine 等效项,因此您必须手动调用它。当我们包装 pymongo 时,您可以通过从连接寄存器中获取数据库来进行调用。最简单的方法是使用文档类,例如:

db = Document._get_db()
client_count = db.command("serverStatus")["connections"]['current'] - 1
于 2013-02-06T21:22:39.143 回答
1

警告:我不太了解这些 API。

但是,如果您查看 mongoengine 的依赖关系,您会发现它依赖于 pymongo,因为它实际上是根据 pymongo 实现的。

现在看看 mongoengines 对其连接逻辑的实现:https://github.com/MongoEngine/mongoengine/blob/master/mongoengine/connection.py#L113:它返回的连接对象实际上是 pymongo 连接。因此,原则上,您应该能够对返回的连接进行 pymongo 调用。所以你实际上可以继续使用上面的调用。当然,此时您违反了 mongoengine 的封装,因为 mongoengine 可以更改其内部连接的实现类型。

但是,通过他们的文档,我看不到任何其他方法可以访问数据库的这方面,所以这也许是最简单的方法。

于 2013-02-06T20:14:48.807 回答