MongoDB小結(jié)(更新中)

因為即將的工作需要,昨天特地安裝并簡單學習了MongodDB

安裝的版本是 2.6.9
學習方式是閱讀*** 官方Docs*** 可以在頁面OPTIONS里選擇pdf然后下載到本地
系統(tǒng)是win7 64位

關于安裝過程就不多提了讶泰,官方Docs里有詳細說明胀溺,實在碰壁網(wǎng)上也有很多教程可以填坑
安裝的目錄是D:\MongoDB
MongoDB默認的數(shù)據(jù)庫目錄是 \data\db蜻牢,需要自己手動創(chuàng)建這兩個文件夾,當然也可以在配置文件中指定其他目錄

配置文件

Mongo本身沒有配置文件,所以要自己手動添加,我將其創(chuàng)建于D:\MongoDB\mongod.cfg下锹安,mongod.cfg文件中對Mongo的log和數(shù)據(jù)庫路徑進行配置,內(nèi)容如下

logpath=d:\data\log\mongod.log
dbpath=d:\data\db
設置成windows服務

然后將其設置成windows服務倚舀,在cmd下鍵入如下命令(注意其中的空格)

sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\mongod.cfg"

創(chuàng)建成功會有 [SC] CreateService 成功 的提示信息
若想刪除該服務可以鍵入

sc delete MongoDB
啟動MongoDB

然后每次開啟在cmd下鍵入

net start MongoDB

關閉使用

net stop MongoDB

如果嫌麻煩可以考慮將其設置為開機自啟叹哭,在之前的添加windows服務中添加 start= "auto",即

sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\mongod.cfg" start= "auto"

或者手動在
控制面板>管理工具>服務
中找到MongoDB修改啟動類型
到此MongoDB的安裝配置基本完成
將MongoDB添加到windows服務是為了更好的啟動MongoDB,通過配置的命令行你也可以知道:

啟動MongoDB服務就是啟動d:MongoDB\bin*目錄下的mongod.exe*

接下來我們將認識該目錄下的另一個重要命令行工具mongo shell痕貌,即mongo.exe风罩,我們將使用它進行數(shù)據(jù)庫的簡單增刪改查(CRUD)來熟悉MongoDB的入門級操作

啟動MongoDB服務之后
雙擊mongo.exe(若將d:MongoDB\bin配置到環(huán)境變量中可直接在cmd下鍵入mongo)
將有類似如下的提示信息:

2015-05-03T13:38:11.507+0800 Hotfix KB2731284 or later update is not installed,
will zero-out data files
MongoDB shell version: 2.6.9
connecting to: test

其中打印了時間、版本以及當前連接數(shù)據(jù)庫名(即:test)等信息
啟動mongo shell默認進入 test 數(shù)據(jù)庫
可以鍵入

db

查看當前所在數(shù)據(jù)庫名舵稠,而鍵入

show dbs

將查看所有數(shù)據(jù)庫名
你會發(fā)現(xiàn)并沒有test泊交,MongoDB在你往該數(shù)據(jù)庫插入數(shù)據(jù)前,并沒有真正創(chuàng)建該數(shù)據(jù)庫柱查,我們使用

use mydb

切換到一個新的數(shù)據(jù)mydb,同樣使用 show dbs 你看不到該數(shù)據(jù)庫云石,鍵入db唉工,將顯示新的數(shù)據(jù)庫名mydb
接下來介紹幾個概念,他們分別與傳統(tǒng)的SQL數(shù)據(jù)庫的這些概念一一對應:

mongo sql
collection(集合) table(表)
document(文檔) row(行)
field(字段) column(列)

翻譯不準確的話多多見諒
MongoDB是面向 文檔 存儲的nosql數(shù)據(jù)庫汹忠,這里的文檔主要指json格式類型淋硝,而所有的文檔都存儲在MongoDB數(shù)據(jù)庫的 集合 中雹熬,就像SQL數(shù)據(jù)庫中所有的行都存儲在表中,MongoDB的每個數(shù)據(jù)庫可以有很多個 集合谣膳,就像每個數(shù)據(jù)庫可以有多張表

接下來我們創(chuàng)建兩個文檔竿报,在mongo shell中輸入

d1 =  {x: 3, y: 4}
d2 = {name: "mongo", age: 18}

然后插入到mydb中的test這個集合中

 db.test.insert(d1)
 db.test.insert(d2)

往集合中插入文檔使用

db.集合名.insert(文檔)

在這個過程中,如果集合不存在继谚,MongoDB會隱式地自動創(chuàng)建該集合再進行插入烈菌,無需顯式地去創(chuàng)建該集合,可以鍵入

show collections

查看當前數(shù)據(jù)庫的全部集合花履,其中有個自動創(chuàng)建的system.indexes集合存儲當前數(shù)據(jù)庫下的所有索引
接下來查看剛才插入數(shù)據(jù)庫的兩條記錄芽世,鍵入

db.test.find()

將會打印剛才插入集合test中的兩個文檔,并且會自動給每個文檔增加一個 _id 鍵值對
查詢集合中的文檔使用

db.集合名.find()

你還可以給find增加各種限制诡壁,來查詢指定的文檔
我們再往其中增加幾個文檔济瓢,來測試find的限制查詢

db.test.insert({name:"bernie",age:23})
db.test.insert({name:"mike",age:22})
db.test.insert({name:"andy",age:30})
db.test.insert({name:"tony",age:25})
db.test.find()

現(xiàn)在集合打印出了6個文檔,我們查找 age > 22 的所有文檔的 name妹卿,鍵入

db.test.find({age: {$gt: 22}}, {name: 1})

將打印

{ "_id" : ObjectId("5545e1d9f26186a27992619e"), "name" : "bernie" }
{ "_id" : ObjectId("5545e208f26186a2799261a0"), "name" : "andy" }
{ "_id" : ObjectId("5545e22df26186a2799261a1"), "name" : "tony" }

三條文檔旺矾,并且只有只有name而不顯示age
接下來分析 db.test.find({age: {$gt: 22}}, {name: 1})

query criteria(查詢規(guī)則) projection(投影)
{age: {$gt: 22}} {name: 1}

find的第一個參數(shù)是查詢規(guī)則,即限定查詢的條件夺克,容易看出來是代表的是
age > 22,其中 $gt 是條件操作符代表 大于(greater than)箕宙,以下附條件操作符的一一映射表

符號 含義
$eq =
$ne !=
$gt >
$lt <
$gte >=
$lte <=
$not !
$in in
$nin not in
$or or
$mod %

第二個參數(shù)投影{name:1}是對結(jié)果集的篩選,其中的 1 可以用 true 替換懊直,而如果使用 0false 將會對結(jié)果集的投影進行取反扒吁,也就是除了name其他都會篩選出來
鍵入如下命令進行文檔更新

db.test.update({x:3},{x:100,y:100})

然后鍵入 db.test.find() 查看剛才的 {x: 3, y: 4} 更新為了 {x:100, y:100}
update的第一個參數(shù)同樣是 查詢規(guī)則,第二個條件是具體修改內(nèi)容室囊,如下:

db.集合名.update(查詢規(guī)則, 修改內(nèi)容)

鍵入如下命令刪除文檔

db.test.remove({age:22})

使用 db.test.find() 發(fā)現(xiàn)包含 {age:22} 的文檔已經(jīng)刪除,刪除規(guī)則如下:

db.集合名.remove(查詢規(guī)則)

增刪改查基本完成

未完待續(xù)5癖馈(過兩天填索引和bulk的坑)
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市融撞,隨后出現(xiàn)的幾起案子盼铁,更是在濱河造成了極大的恐慌,老刑警劉巖尝偎,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饶火,死亡現(xiàn)場離奇詭異,居然都是意外死亡致扯,警方通過查閱死者的電腦和手機肤寝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抖僵,“玉大人鲤看,你說我怎么就攤上這事∷H海” “怎么了义桂?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵找筝,是天一觀的道長。 經(jīng)常有香客問我慷吊,道長袖裕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任溉瓶,我火速辦了婚禮急鳄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嚷闭。我一直安慰自己攒岛,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布胞锰。 她就那樣靜靜地躺著灾锯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗅榕。 梳的紋絲不亂的頭發(fā)上顺饮,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音凌那,去河邊找鬼兼雄。 笑死,一個胖子當著我的面吹牛帽蝶,可吹牛的內(nèi)容都是我干的赦肋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼励稳,長吁一口氣:“原來是場噩夢啊……” “哼佃乘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驹尼,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤趣避,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后新翎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體程帕,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年地啰,在試婚紗的時候發(fā)現(xiàn)自己被綠了愁拭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡亏吝,死狀恐怖岭埠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤枫攀,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站株茶,受9級特大地震影響来涨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜启盛,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一蹦掐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧僵闯,春花似錦卧抗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至向图,卻和暖如春泳秀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背榄攀。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工嗜傅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人檩赢。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓吕嘀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贞瞒。 傳聞我的和親對象是個殘疾皇子偶房,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

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