MongoEngine与serverStatus
我正在把我的Python脚本从使用pymongo切换到使用mongoengine。之前,我有这样一个调用:
client_count = db.command("serverStatus")["connections"]['current'] - 1
但我想用mongoengine的方式来获取当前连接的数量。我查看了服务器状态和mongoengine的文档,但是没找到一个可以用来获取服务器变量的类似调用。
我想换到mongoengine是因为我们正在使用它的ODM功能,并且希望减少重复的工作。
有没有什么建议?如果有的话,正确的语法是什么?谢谢。
在此期间,我们会继续使用pymongo来获取正确的数据,同时用mongoengine处理其他所有事情。
2 个回答
注意:我对这两个API都不太了解。
不过,如果你看看mongoengine的依赖关系,你会发现它依赖于pymongo,因为它实际上是基于pymongo来实现的。
现在看看mongoengine是怎么处理连接的:https://github.com/MongoEngine/mongoengine/blob/master/mongoengine/connection.py#L113。它返回的连接对象实际上就是pymongo的连接。所以,原则上,你应该可以在返回的连接上调用pymongo的功能。因此,你实际上可以继续使用上面的调用。当然,这样做会违反mongoengine的封装性,因为mongoengine可能会改变它内部的连接实现方式。
不过,从他们的文档来看,我没有看到其他方法可以访问数据库的这个方面,所以也许这就是最简单的解决办法。
没有和Mongoengine相对应的功能,所以你需要手动去调用这个。因为我们是用pymongo来封装的,你可以通过从连接注册中获取数据库来进行调用。最简单的方法是使用文档类,比如:
db = Document._get_db()
client_count = db.command("serverStatus")["connections"]['current'] - 1