Mongo學習第一課

日期:2014年12月27日 周六

信息收集

MongoDB: The Definitive Guide 的豆瓣主頁
Mongodb官方文檔

  • 評價都是來自中文版,看了看價格,40刀確實是貴了喧半,默默的準備下載免費的PDF吧徽曲,中英對照著看涧狮。
  • 評論提及官方文檔似乎更好。
  • 該書適合入門取董,對應另外一本《mongoDB 50 tips》偏設計多些。
  • 比對其他書籍的目錄和評論發(fā)現(xiàn)自己入門把官方文檔看一遍就差不多了无宿。有更加深的需求在細致地進行學習茵汰。

MongoDB簡介

MongoDB是開源的文檔型數(shù)據(jù)庫數(shù),每條記錄對應一個文檔孽鸡,文檔類似于JSON的數(shù)據(jù)格式組織在一起蹂午,文檔型數(shù)據(jù)庫數(shù)的幾個有點:

  • 文檔格式能夠響應多種編程語言。
  • 嵌套的文檔減少了昂貴的join導致的開銷彬碱。
  • Dynamic schema supports fluent polymorphism 豆胸?

MongoDB的關鍵特性(牛皮輕吹~)

  • 高性能
  • 高可用性
  • 可伸縮性

安裝

在Mac下安裝MongoDB有兩種方法,如下介紹通過OS X package manager Homebrew安裝的步驟:

$ brew update
$ brew install mongodb

開始使用

以下部分介紹使用mongo shell做基本的數(shù)據(jù)庫操作巷疼, mongo標準的MongoDB發(fā)布的一部分晚胡,它提供了一個特性完全的JavaScript環(huán)境以及所有MongoDB的接口。

連接數(shù)據(jù)庫
  • 簡單地通過mongod我們啟動了MongoDB嚼沿,通過mongo我們連接到了MongoDB的server估盘。

  • 啟動以后,默認使用名為 test 的數(shù)據(jù)庫骡尽;通過 db可以查看當前所在數(shù)據(jù)庫忿檩;通過show dbs會展示所有的數(shù)據(jù)庫;通過use mydb可以切換到對應數(shù)據(jù)庫爆阶;mydb不存在燥透,use mydb也能成功(通過db查看的結果是mydb),但是show dbs命令的結果中不包含mydb辨图,因為mydb要在插入數(shù)據(jù)以后才會被真正創(chuàng)建班套。

  • 通過 help可以查看幫助; 甚至你可以通過后面添加.help()查看方法對象的使用故河。

創(chuàng)建集合和插入文檔

在下面的例子中吱韭,我們使用數(shù)據(jù)庫mydb,插入文檔到一個新的集合testData。

當集合第一次被使用的時候理盆,MongoDB會隱式地創(chuàng)建它痘煤,因此在插入數(shù)據(jù)之前你無需創(chuàng)建它,并且因為MongoDB使用的動態(tài)的表猿规,在插入問的那個之前你不需要提前定義好文檔結構衷快。

  1. 確保使用是mydb,不是的話切換到mydb
  2. 創(chuàng)建兩個文檔

    j = { name : "mongo" }
    k = { x : 3 }

  3. 插入文檔到集合中

    db.testData.insert( j )
    db.testData.insert( k )

  4. 查看集合是否生成

    show collections

  5. 查看結合中的文檔

    db.testData.find()
    { "_id" : ObjectId("549d5a4c341aee5d3faa5c77"), "name" : "mongo" }
    { "_id" : ObjectId("549d5a50341aee5d3faa5c78"), "x" : 3 }

所有的 MongoDB 文檔必須有唯一的 _id值姨俩,mongo在插入文檔到集合的時候會自動創(chuàng)建這么一個唯一的ObjectId作為_id的值蘸拔。

使用for循環(huán)插入文檔

在mongo shell中通過執(zhí)行如下代碼可以批量插入一定數(shù)量的假數(shù)據(jù):

for (var i = 1; i <= 25; i++) {
   db.testData.insert( { x : i } )
}

通過db.testData.find()只能顯示前20條數(shù)據(jù),find()會返回游標cursor环葵,在shell中鍵入下it會將剩余的數(shù)據(jù)都顯示出來调窍。

使用JavaScript方法插入文檔

也可以在~/.mongorc.js中插入JavaScript方法:

function insertData(dbName, colName, num) {
  var col = db.getSiblingDB(dbName).getCollection(colName);
  for (i = 0; i < num; i++) {
    col.insert({x:i});
  }
  print(col.count());
}

然后再在shell中執(zhí)行:

insertData("mydb", "testData", 400)
使用游標
  • 使用循環(huán)+游標來遍歷集
var c = db.testData.find()
while ( c.hasNext() ) printjson( c.next() )
  • 使用游標做數(shù)組操作
var c = db.testData.find()
printjson( c [ 4 ] )
  • 查詢特殊的文檔
db.testData.find( { x : 18 } )
  • 返回一個文檔(不同于find會返回包含所有結果的游標)
db.testData.findOne()
  • 限制返回文檔的條數(shù)
db.testData.find().limit(3)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市张遭,隨后出現(xiàn)的幾起案子邓萨,更是在濱河造成了極大的恐慌,老刑警劉巖菊卷,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件先誉,死亡現(xiàn)場離奇詭異,居然都是意外死亡的烁,警方通過查閱死者的電腦和手機褐耳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渴庆,“玉大人铃芦,你說我怎么就攤上這事〗罄祝” “怎么了刃滓?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耸弄。 經(jīng)常有香客問我咧虎,道長,這世上最難降的妖魔是什么计呈? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任砰诵,我火速辦了婚禮,結果婚禮上捌显,老公的妹妹穿的比我還像新娘茁彭。我一直安慰自己,他們只是感情好扶歪,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布理肺。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妹萨。 梳的紋絲不亂的頭發(fā)上年枕,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音乎完,去河邊找鬼熏兄。 笑死,一個胖子當著我的面吹牛囱怕,可吹牛的內容都是我干的。 我是一名探鬼主播毫别,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼娃弓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岛宦?” 一聲冷哼從身側響起台丛,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砾肺,沒想到半個月后挽霉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡变汪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年侠坎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裙盾。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡实胸,死狀恐怖,靈堂內的尸體忽然破棺而出番官,到底是詐尸還是另有隱情庐完,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布徘熔,位于F島的核電站门躯,受9級特大地震影響,放射性物質發(fā)生泄漏酷师。R本人自食惡果不足惜讶凉,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望山孔。 院中可真熱鬧缀遍,春花似錦、人聲如沸饱须。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至譬挚,卻和暖如春锅铅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背减宣。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工盐须, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人漆腌。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓贼邓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闷尿。 傳聞我的和親對象是個殘疾皇子塑径,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內容