MongoDB基本用法

簡(jiǎn)介(https://www.mongodb.com/

  • MongoDB是為了快速開(kāi)發(fā)互聯(lián)網(wǎng)Web應(yīng)用而設(shè)計(jì)的數(shù)據(jù)庫(kù)系統(tǒng)峰锁;
  • MongoDB的設(shè)計(jì)目標(biāo)是極簡(jiǎn)氮发、靈活盆犁、作為Web應(yīng)用棧的一部分肚邢;
  • MongoDB的數(shù)據(jù)模型是面向文檔的,所謂文檔是一種類(lèi)似于JSON的結(jié)構(gòu)摊溶,簡(jiǎn)單理解MongoDB這個(gè)數(shù)據(jù)庫(kù)中存的各種各樣的JSONBSON爬骤,比普通的JSON的功能要更加的強(qiáng)大);
  • MongoDB是一個(gè)NoSQL(Not Only SQL)的數(shù)據(jù)庫(kù)(非關(guān)系型數(shù)據(jù)庫(kù))莫换;
  • MongoDB數(shù)據(jù)庫(kù)使用的是javaScript進(jìn)行操作的霞玄,在MongoDB含有一個(gè)對(duì)ES標(biāo)準(zhǔn)實(shí)現(xiàn)的引擎骤铃,在MongoDB中所有ES中的語(yǔ)法中都可以使用。

安裝及啟動(dòng)

安裝

  1. 下載

    • 下載地址:https://www.mongodb.org/dl/win32/
    • 偶數(shù)版本為穩(wěn)定版坷剧,奇數(shù)版本為開(kāi)發(fā)版
    • 3.2版本后不支持32位系統(tǒng)
  2. 安裝

  3. 配置環(huán)境變量

    C:\Program Files\MongoDB\Server\3.4\bin

  4. c盤(pán)根目錄

    1. 創(chuàng)建一個(gè)文件夾data
    2. data中創(chuàng)建一個(gè)文件夾db

啟動(dòng)

基本操作

操作 命令
啟動(dòng)服務(wù)器 mongod --dbpath 路徑 --port 端口號(hào)
啟動(dòng)客戶端 mongo

手動(dòng)啟動(dòng)

  1. 打開(kāi)cmd命令行窗口

    輸入 mongod啟動(dòng)mongodb服務(wù)器劲厌。

    • 安裝32位注意:

      啟動(dòng)服務(wù)器時(shí),需要輸入如下內(nèi)容:

    mongod --storageEngine=mmapv1
    
    • cmd窗口不可關(guān)閉
  2. 再打開(kāi)一個(gè)cmd窗口

    輸入mongo連接mongodb(啟動(dòng)客戶端)听隐,出現(xiàn)> ,則啟動(dòng)成功哄啄。

后臺(tái)啟動(dòng)

? 將MongoDB設(shè)置為系統(tǒng)服務(wù)雅任,可以自動(dòng)在后臺(tái)啟動(dòng),不需要每次都手動(dòng)啟動(dòng)咨跌。

  1. c盤(pán)根目錄創(chuàng)建data沪么,并在在data下創(chuàng)建dblog文件夾

  2. bin所在目錄 C:\Program Files\MongoDB\Server\3.4下添加一個(gè)配置文件mongod.cfg

    systemLog:
     destination: file
     path: c:\data\log\mongod.log
    storage:
     dbPath: c:\data\db
    
  3. 以管理員的身份打開(kāi)命令行窗口

  4. 執(zhí)行如下的命令

    sc.exe create MongoDB binPath= "\"mongod的bin目錄\mongod.exe\" --service --config=\"mongo的安裝目錄\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
    

    例如:

    sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
    
  5. 啟動(dòng)mongodb服務(wù)

  6. 如果啟動(dòng)失敗,證明上邊的操作有誤:

    1. 在控制臺(tái)輸入sc.exe delete MongoDB刪除之前配置的服務(wù)
    2. 重復(fù)上述1-5步驟
  7. 錯(cuò)誤碼1053解決方法:

    1. cmd刪除之前配置的服務(wù)
    sc.exe delete MongoDB
    
    1. cmd輸入
    "C:/Program Files/MongoDB/Server/3.4/bin/mongod.exe" --bind_ip 127.0.0.1 --logpath "c:/data/log/mongod.log" --logappend --dbpath "c:/data" --directoryperdb --serviceName MongoDB --install
    
    1. cmd啟動(dòng)服務(wù)
    net start MongoDB
    

安裝可視化管理工具

? 下載地址:https://www.mongodbmanager.com/download

CRUD操作

完整操作詳見(jiàn):https://docs.mongodb.com/manual/reference/operator/

基本操作

操作 命令
進(jìn)入指定的數(shù)據(jù)庫(kù) use 數(shù)據(jù)庫(kù)
顯示所有的數(shù)據(jù)庫(kù) show dbs
顯示數(shù)據(jù)庫(kù)中所有的集合 show collections
顯示當(dāng)前所在的數(shù)據(jù)庫(kù) db

備注:

  • 當(dāng)我們創(chuàng)建文檔時(shí)锌半,如果文檔所在的集合或數(shù)據(jù)庫(kù)不存在會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)和集合禽车。

插入文檔

操作 命令 備注
向集合中插入一個(gè)或多個(gè)文檔 db.<collection>.insert() 傳入對(duì)象或數(shù)組
向集合中插入一個(gè)文檔 db.<collection>.insertOne() 傳入對(duì)象
向集合中插入多個(gè)文檔 db.<collection>.insertMany() 傳入數(shù)組

備注:

  • 當(dāng)向幾何中插入文檔時(shí),如果沒(méi)有給文檔指定_id屬性刊殉,則數(shù)據(jù)庫(kù)會(huì)自動(dòng)為文檔添加_id屬性殉摔,該屬性用來(lái)作為文檔的唯一標(biāo)識(shí)(根據(jù)時(shí)間戳及機(jī)器碼生成,確保唯一)
  • <collection>表示集合名记焊,下同

查詢(xún)文檔

操作 命令 備注
查詢(xún)所有符合條件的文檔 db.<collection>.find() 接收一個(gè)對(duì)象作為參數(shù):<br />{}表示查詢(xún)集合中所有的文檔<br />{屬性:值}查詢(xún)屬性是指定值的文檔<br />返回的是一個(gè)數(shù)組
查詢(xún)第一個(gè)符合條件的文檔 db.<collection>.findOne() 返回的是一個(gè)對(duì)象
獲取查詢(xún)結(jié)果的數(shù)量 db.<collection>.find().count() 返回?cái)?shù)值
設(shè)置顯示數(shù)據(jù)上限 db.<collection>.find().limit()
跳過(guò)指定數(shù)量數(shù)據(jù) db.<collection>.find().skip()
指定文檔排序規(guī)則 db.<collection>.find().sort() 需要傳遞對(duì)象來(lái)指定排序規(guī)則:<br />1表示升序<br />-1表示降序
設(shè)置查詢(xún)結(jié)果的投影 db.<collection>.find({},{attr:1,_id:0}) 在第二個(gè)參數(shù)位置設(shè)置查詢(xún)結(jié)果:<br />1表示顯示<br />0表示不顯示

備注:

skip()limit()書(shū)寫(xiě)先后順序?qū)Y(jié)果無(wú)影響(先執(zhí)行skip()后執(zhí)行limit())逸月。

查詢(xún)條件

功能 命令 例子
通過(guò)內(nèi)嵌文檔對(duì)文檔進(jìn)行查詢(xún) {“文檔名.文檔名”:值} db.mans.find({"hobby.movies":"love"})
查詢(xún)大于條件 $gt db.mans.find({age:{$gt:20}})
查詢(xún)小于條件 $lt db.mans.find({age:{$lt:20}})
查詢(xún)大于等于條件 $gte db.mans.find({age:{$gte:20}})
查詢(xún)小于等于條件 $lte db.mans.find({age:{$lte:20}})

修改文檔

操作 命令 備注
修改、替換集合中的一個(gè)或多個(gè)文檔 db.<collection>.update(查詢(xún)條件遍膜,新對(duì)象碗硬,配置項(xiàng)) 默認(rèn)情況下會(huì)使用新對(duì)象來(lái)替換舊對(duì)象<br />需要使用修改操作符修改指定屬性<br />默認(rèn)只會(huì)修改一個(gè),第三個(gè)參數(shù)對(duì)象中muti屬性值改為true則變?yōu)樾薷亩鄠€(gè)
修改集合中的一個(gè)文檔 db.<collection>.updateOne() 只會(huì)修改一個(gè)
修改集合中的多個(gè)文檔 db.<collection>.updateMany() 只會(huì)修改多個(gè)
替換集合中的一個(gè)文檔 db.<collection>.replaceOne()

修改操作符

功能 操作符 例子
修改文檔中指定屬性 $set db.mans.update({name: 'Tom'}瓢颅,{$set: {age:23}})
刪除文檔中指定屬性 $unset db.mans.update({name: 'Tom'}恩尾,{$unset: {age:23}})
數(shù)組添加一個(gè)新元素 $push db.mans.update({name: 'Tom'},{$push:{"hobby.movies":"love"}})
數(shù)組添加一個(gè)新元素(已存在則不會(huì)添加) $addToSet db.mans.update({name: 'Tom'}挽懦,{$addToSet:{"hobby.movies":"love"}})

刪除文檔

操作 命令 備注
刪除集合中的一個(gè)或多個(gè)文檔 db.<collection>.remove(查詢(xún)條件翰意,配置項(xiàng)) 默認(rèn)刪除多個(gè),第二個(gè)參數(shù)傳入true則變?yōu)橹粍h除一個(gè)<br />可以根據(jù)條件刪除文檔信柿,傳遞條件方式與find()相同
刪除集合中的一個(gè)文檔 db.<collection>.deleteOne() 刪除一個(gè)
刪除集合中的多個(gè)文檔 db.<collection>.deleteMany() 刪除多個(gè)
清空一個(gè)集合 db.<collection>.remove({}) 刪除所有猎物,性能略差
刪除一個(gè)集合 db.<collection>.drop()
刪除一個(gè)數(shù)據(jù)庫(kù) db.dropDatabase()

備注:

一般會(huì)在數(shù)據(jù)庫(kù)的數(shù)據(jù)中添加一個(gè)字段,用來(lái)表示數(shù)據(jù)是否被刪除(0為未刪除角塑,1為刪除)蔫磨,很少真正將數(shù)據(jù)刪除。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末圃伶,一起剝皮案震驚了整個(gè)濱河市堤如,隨后出現(xiàn)的幾起案子蒲列,更是在濱河造成了極大的恐慌,老刑警劉巖搀罢,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝗岖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡榔至,警方通過(guò)查閱死者的電腦和手機(jī)抵赢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)唧取,“玉大人铅鲤,你說(shuō)我怎么就攤上這事》愕埽” “怎么了邢享?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)淡诗。 經(jīng)常有香客問(wèn)我骇塘,道長(zhǎng),這世上最難降的妖魔是什么韩容? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任款违,我火速辦了婚禮,結(jié)果婚禮上群凶,老公的妹妹穿的比我還像新娘池充。我一直安慰自己韵吨,他們只是感情好逾礁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布霹购。 她就那樣靜靜地躺著,像睡著了一般溢陪。 火紅的嫁衣襯著肌膚如雪萍虽。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天形真,我揣著相機(jī)與錄音杉编,去河邊找鬼。 笑死咆霜,一個(gè)胖子當(dāng)著我的面吹牛邓馒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛾坯,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼光酣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了脉课?” 一聲冷哼從身側(cè)響起救军,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤财异,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后唱遭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體戳寸,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年拷泽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疫鹊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡司致,死狀恐怖拆吆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚌吸,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布砌庄,位于F島的核電站羹唠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏娄昆。R本人自食惡果不足惜佩微,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望萌焰。 院中可真熱鬧哺眯,春花似錦、人聲如沸扒俯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撼玄。三九已至夺姑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掌猛,已是汗流浹背盏浙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荔茬,地道東北人废膘。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像慕蔚,于是被迫代替她去往敵國(guó)和親丐黄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,898評(píng)論 2 89
  • 背景: 閱讀新聞 12C CDB模式下RMAN備份與恢復(fù) [日期:2016-11-29] 來(lái)源:Linux社區(qū) 作...
    陽(yáng)屯okyepd閱讀 3,336評(píng)論 0 7
  • MongoDB簡(jiǎn)介 MongDB是一個(gè)高性能孔飒,開(kāi)源孵稽,無(wú)模式的文檔型NosQL數(shù)據(jù)庫(kù)许起。 主要功能特性: 1.文件存儲(chǔ)...
    情話_2ee5閱讀 421評(píng)論 0 2
  • 數(shù)據(jù)庫(kù)操作 創(chuàng)建數(shù)據(jù)庫(kù) 查看所有用戶 向指定數(shù)據(jù)庫(kù)添加數(shù)據(jù) 刪除數(shù)據(jù)庫(kù) 刪除集合 集合操作 【基本軟件必備的增刪改...
    茶藝瑤閱讀 156評(píng)論 0 0
  • 親愛(ài)的接校,我想你了猛频。你現(xiàn)在還好嗎?或許在玩耍蛛勉,或許你在休息鹿寻,又或許你在和其他人一起打情罵俏? 我只是想你了诽凌,想念你的...
    檸檬女孩閱讀 181評(píng)論 0 1