MongoDB基本用法

簡介(https://www.mongodb.com/

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

安裝及啟動(dòng)

安裝

  1. 下載

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

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

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

  4. c盤根目錄

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

啟動(dòng)

基本操作

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

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

  1. 打開cmd命令行窗口

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

    • 安裝32位注意:

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

    mongod --storageEngine=mmapv1
    
    • cmd窗口不可關(guān)閉
  2. 再打開一個(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盤根目錄創(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. 以管理員的身份打開命令行窗口

  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操作

完整操作詳見:https://docs.mongodb.com/manual/reference/operator/

基本操作

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

備注:

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

插入文檔

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

備注:

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

查詢文檔

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

備注:

skip()limit()書寫先后順序?qū)Y(jié)果無影響(先執(zhí)行skip()后執(zhí)行limit())。

查詢條件

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

修改文檔

操作 命令 備注
修改、替換集合中的一個(gè)或多個(gè)文檔 db.<collection>.update(查詢條件,新對象,配置項(xiàng)) 默認(rèn)情況下會(huì)使用新對象來替換舊對象<br />需要使用修改操作符修改指定屬性<br />默認(rèn)只會(huì)修改一個(gè),第三個(gè)參數(shù)對象中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(查詢條件,配置項(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ù)庫 db.dropDatabase()

備注:

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容