在Python中执行MongoDb语句

时间:2011-03-18 10:21:45

标签: python mongodb pymongo

我有一个用Python运行的Web服务器。他从一些应用程序获取一些数据,需要将它们存储在MongoDB中。我的MongoDB是分片的。 现在我希望我的Web服务器知道Shards MongoDB有多少。目前他从cfg文件中读取此内容。在MongoDb中有一个名为printshardingstatus的Statement,你可以看到所有的分片。所以我试着从我的Pythonserver中调用这个语句。但它似乎不可能。我没有在Pymongo API中找到这样的功能。

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

3 个答案:

答案 0 :(得分:1)

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

如果您想查看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: " +
   ...

答案 1 :(得分:0)

您是否尝试过pymongomongoengine?然后可能会向作者发送消息......

答案 2 :(得分:0)

您可以简单地获取配置数据库并在正常集合上对分片集合执行find()。