在Python中执行MongoDb语句

0 投票
3 回答
1639 浏览
提问于 2025-04-16 13:57

我有一个用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: " +
   ...

撰写回答