2011-03-18 3 views
0

У меня есть веб-сервер, работающий на Python. Он получает некоторые данные из некоторых приложений и должен хранить их в MongoDB. Мой MongoDB оштрафован. Теперь я хочу, чтобы мой веб-сервер знал, как много осколков MongoDB. На данный момент он читает это из файла cfg. Существует заявление в MongoDb с именем printshardingstatus, где вы можете видеть все осколки. Поэтому я попытался вызвать это заявление с моего Pythonserver. Но кажется, что это невозможно. Я не нахожу такую ​​функцию в API Pymongo.Выполнять инструкции MongoDb в Python

Так что мой вопрос в том, есть ли возможность запустить заявление MongoDB в Python, чтобы он был напрямую передан и выполнен в MongoDB?

ответ

1

Нет команды сервера для печатиShardingStatus - это просто вспомогательная функция оболочки mongo (javascript). Помощник представляет собой несколько запросов к базе данных конфигурации, а затем некоторую группировку и форматирование, чтобы все выглядело лучше.

Если вы когда-нибудь захотите увидеть, как все работает в оболочке javascript, вы можете удалить из функции функцию parens ("()") и напечатать код 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: " + 
    ... 
0

Вы пробовали pymongo или mongoengine? Тогда, возможно, отправьте сообщение авторам ...

+0

нашел ответ ... есть командная функция, где u может поставить инструкцию в – fastidias

+0

отлично - для тех, кто читает это в будущем, пожалуйста, поделитесь примером :-) –

0

Вы можете просто получить конфигурации databasr и выполнить находку() на коллекции Осколков так же, как обычная коллекция.

Смежные вопросы