2011-03-18 118 views
0

我有一个运行在Python中的Webserver。他从一些应用程序获取一些数据,并需要将这些数据存储在MongoDB中。我的MongoDB被分割了。 现在我想让我的Web服务器知道MongoDB有多少碎片。目前他从一个cfg文件读取这个。 MongoDb中有一个名为printshardingstatus的语句,您可以在其中查看所有分片。所以我试图从我的Python服务器调用这条语句。但似乎这是不可能的。我没有在Pymongo API中找到这样的功能。在Python中执行MongoDb语句

所以我的问题是,是否有机会在Python中运行MongoDB语句,以便它在MongoDB中直接传递和执行?

回答

1

没有服务器命令printShardingStatus - 它只是一个mongo(javascript)壳帮助函数。帮手是针对 配置数据库的一些查询,然后进行一些分组和格式化,使事情看起来更好。

如果你想看看javascript shell中的工作方式,你可以从函数中删除parens(“()”),它会打印出 的JavaScript代码。

以下是javascript shell的代码。

> 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: " + 
    ... 
0

您是否试过pymongomongoengine?然后,也许发送一条消息给作者...

+0

找到答案...有一个命令功能,你可以把这个语句放在 – fastidias 2011-03-18 10:52:30

+0

很好 - 对于任何人在将来阅读这个,请分享一个例子:-) – 2011-03-18 11:07:10

0

你可以简单地得到配置databasr和 在碎片收集 执行find()方法就像正常的集合。