2015-01-22 2 views
2

Я использую оболочку MongoDB и хотел бы определить некоторые ярлыки. Например, было бы неплохо аббревиатура show databases с sd.Как определить псевдонимы в оболочке MongoDB?

я уже успел добавить функцию hw() к оболочке MongoDB, добавив, что это определение к ~/.mongorc.js:

function hw() { 
    print("Hello World."); 
} 

Когда я набираю в Монго-оболочки hw(), он печатает Hello World.

Вопрос 1: Возможно ли выполнение функции без ввода скобок (т.е. hw вместо hw())?

Я пытался связать функцию переменной, используя анонимные функции, но все же я должен ввести скобки, в противном случае определение функции распечатывается

hw=function(){ print("Hello World (anonymous)."); }; 

Вопрос 2: Как я могу выполнить MongoDB команды из моих функций? Я пробовал:

function sd() { 
    show databases; 
} 

но выдает ошибку при запуске MongoDB оболочки:

SyntaxError: Unexpected identifier at /home/edward/.mongorc.js:2 

ответ

4

Чтобы получить список баз данных попробовать:

function sd(){ 
    return db._adminCommand({ listDatabases: 1 }) 
} 

В основном вы должны запустить действительный JavaScript здесь. Помните, что вы должны запускать их в контексте базы данных администратора - runCommand не будет достаточно - здесь вы должны использовать _adminCommand.

Для других команд см http://docs.mongodb.org/manual/reference/command/

, если вы хотите, чтобы избавиться от скобки есть также путь (вы должны поставить имущество на «это»)

Object.defineProperty(this, 'sd', { 
    get: function() { 
     return db._adminCommand({listDatabases: 1}) 
    }, 
    enumerable: true, 
    configurable: true 
}); 
0

Другим способом псевдоним базы данных в оболочке mongo - использовать команду db.getSiblingDB(). В следующем представьте, что у вас есть две базы данных MongoDB - AmazonSales и EbaySales. Обе базы данных имеют коллекцию пользователей. Теперь вы можете использовать псевдонимы, как описано ниже в оболочке Mongo, вместо того, чтобы всегда использовать команду «use» для переключения контекста

var cs = db.getSiblingDB('AmazonSales') 
cs.users.count() 
cs.users.find({name:'John'}) 

var r = db.getSiblingDB('EbaySales') 
r.users.count() 
Смежные вопросы