2016-09-06 3 views
0

사용자 정의 Mongo 쉘 명령을 정의하고 싶습니다.MongoDB : .mongorc.js에 정의 된 사용자 정의 명령

var dbuc; 

(function() { 
    dbuc = (function() { 
     return db.getName().toUpperCase(); 
    })(); 
})(); 

내가 초기 데이터베이스에 대한 적절한 대문자가 이름을 얻고, 그러나 나는 다른 데이터베이스로 전환 할 때 난 아직도 대신 현재의 초기 데이터베이스의 이름을 받고 있어요 : 감안할 때 .mongorc.js은 다음과 같다. 내가 .mongorc.js를 참조

> db 
test 
> dbuc 
TEST 

> use otherbase 

> db 
otherbase 
> dbuc 
TEST 

mongo 실행 전에 실행되고 dbuc 변수가 초기 데이터베이스의 값을 할당 한 이유입니다 - 테스트를. 그러나 나는 어떤 데이터베이스를 사용했는지에 관계없이 현재 데이터베이스의 이름을 얻는 방법에 대해 오히려 궁금해합니다.

답변

0

은 몇 가지주의하는 것이 있습니다

몽고 쉘에서
  • , typeof db는 자바 스크립트 객체이며, typeof dbuc은 문자열입니다.
  • 귀하의 코드에서 dbuc 값은 한 번 할당되며 use이 호출되면 변경되지 않습니다.
  • useshellHelper 함수 (mongo 쉘에서는 shellHelper.use)입니다. 변수 db을 새로 반환 된 데이터베이스 개체와 다시 할당합니다. 솔루션의

한, dbuc가 작동하려면이 .mongorc.js

//The first time mongo shell loads, assign the value of dbuc. 
dbuc = db.getName().toUpperCase(); 

shellHelper.use = function (dbname) { 
    var s = "" + dbname; 
     if (s == "") { 
      print("bad use parameter"); 
      return; 
     } 
db = db.getMongo().getDB(dbname); 

//After new assignment extract and assign upper case of newly assgined db name to dbuc. 
dbuc = db.getName().toUpperCase(); 

print("switched to db " + db.getName()); 

} 
+0

들으에 다음 코드를 추가하는 것입니다, 나는 천국 't은 지금까지 문서에'shellHelper'를 만났다. –

관련 문제