2011-03-18 121 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()方法就像正常的集合。