mongoDB 極簡學習筆記

一帜消、下載安裝

下載地址:https://www.mongodb.com/download-center?jmp=homepage#community

(一)棠枉、Windows安裝

win7及以下的用戶需要打補丁,具體步驟不再簡述泡挺,因為Windows的安裝都是傻瓜似的辈讶,如果不會裝,基本已經(jīng)可以放棄了娄猫,開個玩笑啦贱除。
記得配置環(huán)境變量啊。

(二)媳溺、linux安裝

首先下載的linux環(huán)境下的壓縮包勘伺,放到自己想要的文件夾下,
解壓命令 ------ tar -zxvf mongodb-linux-i686-3.0.4.gz
拷貝到指定目錄 ----- mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
MongoDB 的可執(zhí)行文件位于 bin 目錄下褂删,所以添加配置如下步驟飞醉,
打開配置文件 sudo vim /ect/profile,需不需要sudo屯阀,取決于你的系統(tǒng)權限缅帘,
將其添加到PATH路徑中:
export PATH=<mongodb-install-directory>/bin:$PATH
如果你沒打開默認的27017端口,在程序中是連接不上mongoDB的难衰,
打開步驟如下:

  1. 修改iptables配置文件钦无,添加端口權限
    sudo vim /ect/sysconfig/iptables
  2. 添加下面4句,開放端口
    # mongoDB 開放27017盖袭,28017端口
    -A INPUT -p TCP --dport 27017 -j ACCEPT
    -A OUTPUT -p TCP --dport 27017 -j ACCEPT
    -A INPUT -p TCP --dport 28017 -j ACCEPT
    -A OUTPUT -p TCP --dport 28017 -j ACCEPT
  3. 寫入并退出 :wq
  4. 重啟服務 service iptables restart

特別注意:大坑在此

32位系統(tǒng)開機時會報這個錯誤
2017-07-10T23:53:29.234+0800 W CONTROL [main] 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.

開機命令需要加上 --journal --storageEngine=mmapv1 的后綴命令失暂,因為32位的系統(tǒng)是不支持默認開機的需要自己加上

mongod --dbpath /root/data/db --journal --storageEngine=mmapv1

二、基本命令

基本概念

nosql不是傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)鳄虱,會有多種形式弟塞,而mongodb是其中的一個,mongoDB是一個以K-V為數(shù)據(jù)保存的數(shù)據(jù)庫拙已,而且是弱數(shù)據(jù)類型的决记。不像mysql、oracel倍踪、DB2這些老牌的結構化關系型數(shù)據(jù)庫一樣系宫,在建表時必須要制定表的結構和字段的數(shù)據(jù)類型索昂,并且建好的表只能保存制定好的數(shù)據(jù)結構。
而mongoDB沒有老數(shù)據(jù)庫的包袱扩借,它是可以保存任何數(shù)據(jù)結構的椒惨,并且在同一個集合上的每一條的記錄的數(shù)據(jù)類型都可以不同,可以輕易的擴展潮罪。而傳統(tǒng)的數(shù)據(jù)庫要在一個表上增加一個屬性時框产,則麻煩得多,需要在原有每一條記錄中插入新增的字段错洁,這就使得數(shù)據(jù)庫的擴展性有了很大的制約秉宿,因此在實際的項目當中通常都不會輕易改動表結果的。
但是傳統(tǒng)的數(shù)據(jù)庫也不是一事無成的屯碴,對于查詢要求高的項目還是傳統(tǒng)的數(shù)據(jù)庫會比較好描睦,因為結構化的數(shù)據(jù)和SQL的特性使得傳統(tǒng)數(shù)據(jù)庫的查詢操作足夠強大,適合查詢密集的項目导而,并且由于傳統(tǒng)數(shù)據(jù)庫都支持事務忱叭,所以在數(shù)據(jù)一致性這一點上,相對于NoSQL有著壓倒性的優(yōu)勢今艺,所以業(yè)務數(shù)據(jù)只能存放在傳統(tǒng)的關系型數(shù)據(jù)庫上韵丑。
而mongoDB則由于他個的可擴展性和吞吐性能,上適合存儲大量存儲的項目虚缎,如現(xiàn)在的大數(shù)據(jù)公司都是使用nosql來存儲巨量的數(shù)據(jù)的撵彻,而NoSQL則不支持事務的操作,在數(shù)據(jù)一致性上存在著明顯的缺陷实牡。因此這就注定NoSQL只能用來存放行為數(shù)據(jù)了陌僵。但是優(yōu)勢也和明顯極高的數(shù)據(jù)吞吐量,可擴展性高创坞,這也是為什么大數(shù)據(jù)公司和人工智能公司對NoSQL如此看重了碗短。
并且mongodb沒有表的概念,只有集合的概念题涨,并且集合中也能有多個集合偎谁。mongoDB本質上是存儲json的,數(shù)據(jù)就是以json為數(shù)據(jù)格式保存在文檔中纲堵。

常用命令

mongod 數(shù)據(jù)庫開機命令
--dbpath <路徑> 設置數(shù)據(jù)庫的數(shù)據(jù)源路徑巡雨,通常與上一個命令一起使用完成開機,如果是32位的系統(tǒng)婉支,還需要加上--journal --storageEngine=mmapv1鸯隅,因為32為系統(tǒng)不會默認添加
mongo 進入mongoDB的命令行環(huán)境
show db 顯示當前所處的數(shù)據(jù)庫
show dbs 顯示所有的數(shù)據(jù)庫
use <數(shù)據(jù)庫名> 如果數(shù)據(jù)庫已存在則使用,不存在則創(chuàng)建并使用
show collections 顯示當前數(shù)據(jù)庫下的集合
db.<集合名>.find({"<key>":"<條件>"}) 查詢該數(shù)據(jù)庫下符合的數(shù)據(jù)列表
db.<集合名>.insert({"<key>":"<value>"}) 插入一條記錄
db.<未知集合名>.insert({"<key>":"<value>"}) 會在數(shù)據(jù)庫中創(chuàng)建這個集合并插入這條記錄
db.dropDataBase() 刪除數(shù)據(jù)庫
mongoimport --db <數(shù)據(jù)庫名> --collection <集合名字> --drop --file <文件名路徑> 批量導入
$gt 大于操作符
$gte 大于等于操作符
$lt 小于操作符
$lte 小于操作符
$or
$and
$type 操作符是基于BSON類型來檢索集合中匹配的數(shù)據(jù)類型向挖,并返回結果蝌以。

類型 數(shù)字 備注
Double 1
String 2
Object 3
Array 4
Binary data 5
Undefined 6 已廢棄。
Object id 7
Boolean 8
Date 9
Null 10
Regular Expression 11
JavaScript 13
Symbol 14
JavaScript (with scope) 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255 Query with -1.
Max key 127

功能強大的 .

因為mongodb是一個鍵值對形式存儲數(shù)據(jù)的數(shù)據(jù)庫何之,也就是說value是會千變萬化的跟畅,而面對著這不規(guī)則的數(shù)據(jù)結構MongoDB是怎么處理的呢?答案是使用 “點 ”語法溶推,只要熟用點語法徊件,那么基本上如何管理數(shù)據(jù),就是小問題了蒜危。
例子:

{
  "name" : "Jon Snow",
  "gender" : "male",
  "age" : 25,
  "hobby" : ["read", "sleep", "eat", "play game"],
  "transcript" : [
    {
      "course" : "Mathematics",
      "score" : 18
    },
    {
      "course" : "English",
      "score" : 20
    },
    {
      "course" : "Chinse",
      "score" : 30
    }
  ]
}

{
  "name" : "Sansa Stark",
  "gender" : "female",
  "age" : 16,
  "hobby" : ["read", "sleep", "eat", "play game"],
  "transcript" : [
    {
      "course" : "Mathematics",
      "score" : 40
    },
    {
      "course" : "English",
      "score" : 60
    }
  ]
}

{
  "name" : "Daenerys Targaryen",
  "gender" : "male",
  "age" : 22,
  "hobby" : ["read", "sleep", "eat", "play game"],
  "transcript" : [
    {
      "course" : "Mathematics",
      "score" : 90
    }
  ]
}

要通過課程名來獲取用戶信息虱痕,可以這樣寫:
db.student.find({"transcript.course": "English"})
結果會顯示Jon Snow和Sansa Stark的記錄。

多條件查詢則只需要在多個條件之間加逗號分隔即可
db.student.find({"age" : {$gt : 18}, "transcript.course" : "English"})
結果會是年齡大于18辐赞,選擇了英語課的同學Jon Snow部翘。

基礎教程就到這里了,往后還會繼續(xù)更新响委,并會結合NodeJS做一些小demo新思,認為有用的請多關注,歡迎打賞赘风。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末夹囚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子邀窃,更是在濱河造成了極大的恐慌荸哟,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬捕,死亡現(xiàn)場離奇詭異敲茄,居然都是意外死亡,警方通過查閱死者的電腦和手機山析,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門堰燎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人笋轨,你說我怎么就攤上這事秆剪。” “怎么了爵政?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵仅讽,是天一觀的道長中捆。 經(jīng)常有香客問我迟杂,道長疗韵,這世上最難降的妖魔是什么被廓? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任倒堕,我火速辦了婚禮,結果婚禮上缸匪,老公的妹妹穿的比我還像新娘珍手。我一直安慰自己,他們只是感情好双抽,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布百框。 她就那樣靜靜地躺著,像睡著了一般牍汹。 火紅的嫁衣襯著肌膚如雪铐维。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天慎菲,我揣著相機與錄音嫁蛇,去河邊找鬼。 笑死露该,一個胖子當著我的面吹牛睬棚,可吹牛的內容都是我干的。 我是一名探鬼主播有决,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼闸拿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了书幕?” 一聲冷哼從身側響起新荤,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎台汇,沒想到半個月后苛骨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡苟呐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年痒芝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牵素。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡严衬,死狀恐怖,靈堂內的尸體忽然破棺而出笆呆,到底是詐尸還是另有隱情请琳,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布赠幕,位于F島的核電站俄精,受9級特大地震影響,放射性物質發(fā)生泄漏榕堰。R本人自食惡果不足惜竖慧,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧圾旨,春花似錦踱讨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沫勿。三九已至挨约,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間产雹,已是汗流浹背诫惭。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蔓挖,地道東北人夕土。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像瘟判,于是被迫代替她去往敵國和親怨绣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容