我有一个用Python运行的Web服务器。他从一些应用程序获取一些数据,需要将它们存储在MongoDB中。我的MongoDB是分片的。 现在我希望我的Web服务器知道Shards MongoDB有多少。目前他从cfg文件中读取此内容。在MongoDb中有一个名为printshardingstatus的Statement,你可以看到所有的分片。所以我试着从我的Pythonserver中调用这个语句。但它似乎不可能。我没有在Pymongo API中找到这样的功能。
所以我的问题是,是否有机会在Python中运行MongoDB语句,以便直接在MongoDB中传递和执行?
答案 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)
您是否尝试过pymongo或mongoengine?然后可能会向作者发送消息......
答案 2 :(得分:0)
您可以简单地获取配置数据库并在正常集合上对分片集合执行find()。