3狸剃、MongoDB基礎(chǔ)知識(shí)(2)(MongoDB筆記)

6.3 創(chuàng)建 .mongorc.js 文件

首先在windows中此文件位于C盤的用戶目錄中,而在Linux中是位于/home/yj中狗热,這里yj是我的用戶名钞馁。如果某些腳本會(huì)被頻繁加載虑省,可以將它們添加到.mongorc.js文件中,這個(gè)文件會(huì)在啟動(dòng)shell時(shí)(具體來說是連接時(shí))自動(dòng)運(yùn)行僧凰。下面我們?cè)诖宋募刑砑尤缦聝?nèi)容:

// .mongorc.js
var compliment = ["attractive", "intelligent", "like Batman"];
var index = Math.floor(Math.random() * 3);
print("Hello, you're looking particulary " + compliment[index] + " today!");

然后啟動(dòng)shell并連接:

1

為了實(shí)用探颈,可以使用此文件創(chuàng)建一些自己需要的全局變量,或者是為太長(zhǎng)的名字創(chuàng)建一個(gè)簡(jiǎn)短的別名训措,也可以重寫內(nèi)置的函數(shù)伪节。此文件最常見的用途還是移除那些比較“危險(xiǎn)”的shell輔助函數(shù)。

var no = function(){
  print("Not on my watch.");
};
//禁止刪除數(shù)據(jù)庫
db.dropDatabase = DB.prototype.dropDatabase = no;

//禁止刪除集合
DBCollection.prototype.drop = no;

//禁止刪除索引
DBCollection.prototype.dropIndex = no;

說明:改變數(shù)據(jù)庫函數(shù)時(shí)绩鸣,要確保同時(shí)對(duì)db變量和DB原型進(jìn)行改變怀大。如果在啟動(dòng)的時(shí)候執(zhí)行--norc參數(shù),就可以禁止加載此文件呀闻。
注意:這種方式并不能保護(hù)數(shù)據(jù)庫免受惡意用戶的攻擊化借,只能預(yù)防自己的手段。

6.4 定制shell提示

prompt變量設(shè)為一個(gè)字符串或者函數(shù)捡多,就可以重寫默認(rèn)的shell提示蓖康。例如,如果正在運(yùn)行一個(gè)需要耗時(shí)幾分鐘的查詢垒手,你可能希望完成時(shí)在shell提示中輸出當(dāng)前時(shí)間钓瞭,這樣就可以知道最后一個(gè)操作的完成時(shí)間了。

prompt = function(){
  return (new Date()) + ">";
};

另一個(gè)方便的提示是顯示當(dāng)前使用的數(shù)據(jù)庫:

prompt = function(){
  if(typeof db == 'undefined'){
    return '(nodb) > ';
  }
  //檢查最后的數(shù)據(jù)庫操作
  try{
    db.runCommand({getLastError:1});
  }catch(e){
    print(e);
  }
  return db + ">";
};

注意:提示函數(shù)應(yīng)該返回字符串淫奔,而且應(yīng)該小心謹(jǐn)慎地處理異常。通常來說堤结,提示函數(shù)中應(yīng)該包含對(duì)getLastError的調(diào)用唆迁,這樣可以捕獲數(shù)據(jù)庫錯(cuò)誤,而且可以在shell斷開時(shí)自動(dòng)重新連接(比如重啟)竞穷。

6.5 編輯復(fù)合變量

shell中多行支持是非常有限的唐责,不可以編輯之前的行。有時(shí)候發(fā)現(xiàn)之前編輯的內(nèi)容有錯(cuò)誤瘾带,但是卻不能返回去編輯是很煩人的鼠哥,為了方便地調(diào)用編輯器,可以在shell中設(shè)置EDITOR變量看政。

> EDITOR = "/usr/bin/vim"

現(xiàn)在如果想要編輯一個(gè)變量朴恳,可以使用"edit"變量名這個(gè)命令,如:

> var wap = db.blog.findOne(
> edit wap

修改之后保存退出允蚣。在.mongorc.js文件中添加一行內(nèi)容于颖,EDITOR="/usr/bin/vim";,以后就不必單獨(dú)設(shè)置此變量了嚷兔。

6.6 集合命名注意事項(xiàng)

可以使用db.collectionName獲取一個(gè)集合的內(nèi)容森渐,但是做入,如果集合名稱中包含保留字或者無效的JS屬性名稱,db.collectionName就不能正常工作了同衣。假設(shè)要訪問version集合竟块,不能直接使用db.version,因?yàn)樗?code>db的一個(gè)方法(會(huì)返回當(dāng)前MongoDB服務(wù)器的版本):

db.version
function(){
  return this.serverBuildInfo().version;
}

為了訪問version集合耐齐,必須使用getCollection函數(shù):

> db.getCollection("version");
test.version

注意:JS屬性名稱只能包含字母浪秘、數(shù)字,以及"$""_"字符蚪缀,而且不能以數(shù)字開頭秫逝。

還有一種方法可以訪問無效屬性名稱命名的集合,那就是使用數(shù)組訪問語法:在JS中询枚,x.y等同于x['y']违帆。如果需要對(duì)blog的每一個(gè)自己進(jìn)行操作,可以使用如下方式進(jìn)行迭代:

var collections = ["posts", "comments", "authors"];
for(var i in collections){
  print(db.blog[collections[i]]);
}

而不必這樣:

print(db.blog.posts);
print(db.blog.comments);
print(db.blog.authors);

注意:不能使用db.blog.i金蜀,這樣會(huì)被解釋為test.blog.i刷后,而不是test.blog.posts。必須使用db.blog[i]語法才能將i解釋為相應(yīng)的變量渊抄〕⒌ǎ可以使用這種方式來訪問那些名字怪異的集合:

> var name = "@#&!"
> db[name].find()

直接使用db.@#&!是非法的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末护桦,一起剝皮案震驚了整個(gè)濱河市含衔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌二庵,老刑警劉巖贪染,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異催享,居然都是意外死亡杭隙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門因妙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痰憎,“玉大人,你說我怎么就攤上這事攀涵∠吃牛” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵以故,是天一觀的道長(zhǎng)涡拘。 經(jīng)常有香客問我,道長(zhǎng)据德,這世上最難降的妖魔是什么鳄乏? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任跷车,我火速辦了婚禮,結(jié)果婚禮上橱野,老公的妹妹穿的比我還像新娘朽缴。我一直安慰自己,他們只是感情好水援,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布密强。 她就那樣靜靜地躺著,像睡著了一般蜗元。 火紅的嫁衣襯著肌膚如雪或渤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天奕扣,我揣著相機(jī)與錄音薪鹦,去河邊找鬼。 笑死惯豆,一個(gè)胖子當(dāng)著我的面吹牛池磁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播楷兽,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼地熄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了芯杀?” 一聲冷哼從身側(cè)響起端考,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揭厚,沒想到半個(gè)月后却特,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棋弥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诚欠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顽染。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖轰绵,靈堂內(nèi)的尸體忽然破棺而出粉寞,到底是詐尸還是另有隱情,我是刑警寧澤左腔,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布唧垦,位于F島的核電站,受9級(jí)特大地震影響液样,放射性物質(zhì)發(fā)生泄漏振亮。R本人自食惡果不足惜巧还,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坊秸。 院中可真熱鬧麸祷,春花似錦、人聲如沸褒搔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽星瘾。三九已至走孽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琳状,已是汗流浹背磕瓷。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留算撮,地道東北人生宛。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肮柜,于是被迫代替她去往敵國和親陷舅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容