0

我有一个在 Python 中运行的网络服务器。他正在从一些应用程序中获取一些数据,并且需要将这些数据存储在 MongoDB 中。我的 MongoDB 已分片。现在我想让我的网络服务器知道 MongoDB 有多少 Shards。目前,他从 cfg 文件中读取此信息。MongoDb 中有一个名为 printshardingstatus 的语句,您可以在其中查看所有分片。所以我试图从我的 Pythonserver 调用这个语句。但是好像不行。我在Pymongo API中没有找到这样的功能。

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

4

3 回答 3

1

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

如果您想查看 javascript shell 中的工作原理,您只需从函数中删除括号(“()”),它将打印 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: " +
   ...
于 2011-03-20T04:29:02.793 回答
0

你试过pymongomongoengine吗?然后也许向作者发送消息......

于 2011-03-18T10:38:01.570 回答
0

您可以像普通收集一样简单地获取配置数据库并在分片收集上执行 find()。

于 2011-03-21T11:37:45.797 回答