在Python中执行MongoDb语句
我有一个用Python搭建的网络服务器。它从一些应用程序获取数据,并需要把这些数据存储到MongoDB里。我的MongoDB是分片的。现在我想让我的网络服务器知道MongoDB有多少个分片。目前,它是从一个配置文件中读取这个信息的。MongoDB里有一个叫做printshardingstatus的命令,可以查看所有的分片。所以我尝试从我的Python服务器调用这个命令,但似乎不行。我在Pymongo的API中找不到这样的功能。
所以我的问题是,有没有办法在Python中运行MongoDB的命令,让它直接传递并在MongoDB中执行呢?
3 个回答
0
你可以简单地获取配置数据库,然后像对待普通集合一样,在分片集合上执行find()操作。
0
你有没有试过 pymongo 或者 mongoengine 呢?如果还没试过的话,可以考虑给这些工具的作者发个消息...
1
没有专门的服务器命令来执行printShardingStatus这个功能——它只是一个Mongo(JavaScript)命令行的辅助函数。这个辅助函数会对配置数据库进行几次查询,然后进行一些分组和格式化,让结果看起来更好看。
如果你想看看在JavaScript命令行中是怎么工作的,可以把这个函数的括号("()")去掉,它就会显示出相应的JavaScript代码。
下面是来自JavaScript命令行的代码。
> printShardingStatus
function (configDB, verbose) {
if (configDB === undefined) {
configDB = db.getSisterDB("config");
}
var version = configDB.getCollection("version").findOne();
if (version == null) {
print("not a shard db!");
return;
}
var raw = "";
var output = function (s) {raw += s + "\n";};
output("--- Sharding Status --- ");
output(" sharding version: " +
...