MongoDB簡介
MongoDB 是一個跨平臺的,面向文檔的數(shù)據(jù)庫,是當(dāng)前 NoSQL 數(shù)據(jù)庫產(chǎn)品中最熱門的一種。它介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的產(chǎn)品。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似 JSON 的 BSON 格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。
? MongoDB 的官方網(wǎng)站地址是:http://www.mongodb.org/
吐槽和評論兩項功能存在以下特點:
(1)數(shù)據(jù)量大
(2)寫入操作頻繁
(3)價值較低
對于這樣的數(shù)據(jù),我們更適合使用MongoDB來實現(xiàn)數(shù)據(jù)的存儲
MongoDB特點
MongoDB 最大的特點是他支持的查詢語言非常強(qiáng)大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。它是一個面向集合的,模式自由的文檔型數(shù)據(jù)庫。
具體特點總結(jié)如下:
(1)面向集合存儲,易于存儲對象類型的數(shù)據(jù)
(2)模式自由
(3)支持動態(tài)查詢
(4)支持完全索引,包含內(nèi)部對象
(5)支持復(fù)制和故障恢復(fù)
(6)使用高效的二進(jìn)制數(shù)據(jù)存儲,包括大型對象(如視頻等)
(7)自動處理碎片,以支持云計算層次的擴(kuò)展性
(8)支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl 及 C++語言的驅(qū)動程序,社區(qū)中也提供了對 Erlang 及.NET 等平臺的驅(qū)動程序
(9) 文件存儲格式為 BSON(一種 JSON 的擴(kuò)展)
MongoDB體系結(jié)構(gòu)
MongoDB 的邏輯結(jié)構(gòu)是一種層次結(jié)構(gòu)。主要由:
文檔(document)、集合(collection)、數(shù)據(jù)庫(database)這三部分組成的。邏輯結(jié)構(gòu)是面向用戶的,用戶使用 MongoDB 開發(fā)應(yīng)用程序使用的就是邏輯結(jié)構(gòu)。
(1)MongoDB 的文檔(document),相當(dāng)于關(guān)系數(shù)據(jù)庫中的一行記錄。
(2)多個文檔組成一個集合(collection),相當(dāng)于關(guān)系數(shù)據(jù)庫的表。
(3)多個集合(collection),邏輯上組織在一起,就是數(shù)據(jù)庫(database)。
(4)一個 MongoDB 實例支持多個數(shù)據(jù)庫(database)。
文檔(document)、集合(collection)、數(shù)據(jù)庫(database)的層次結(jié)構(gòu)如下圖:


數(shù)據(jù)類型
基本數(shù)據(jù)類型
null:用于表示空值或者不存在的字段,{“x”:null}
布爾型:布爾類型有兩個值true和false,{“x”:true}
數(shù)值:shell默認(rèn)使用64為浮點型數(shù)值。{“x”:3.14}或{“x”:3}。對于整型值,可以使用NumberInt(4字節(jié)符號整數(shù))或NumberLong(8字節(jié)符號整數(shù)),{“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}
字符串:UTF-8字符串都可以表示為字符串類型的數(shù)據(jù),{“x”:“呵呵”}
日期:日期被存儲為自新紀(jì)元依賴經(jīng)過的毫秒數(shù),不存儲時區(qū),{“x”:new Date()}
正則表達(dá)式:查詢時,使用正則表達(dá)式作為限定條件,語法與JavaScript的正則表達(dá)式相同,{“x”:/[abc]/}
數(shù)組:數(shù)據(jù)列表或數(shù)據(jù)集可以表示為數(shù)組,{“x”: [“a“,“b”,”c”]}
內(nèi)嵌文檔:文檔可以嵌套其他文檔,被嵌套的文檔作為值來處理,{“x”:{“y”:3 }}
對象Id:對象id是一個12字節(jié)的字符串,是文檔的唯一標(biāo)識,{“x”: objectId() }
二進(jìn)制數(shù)據(jù):二進(jìn)制數(shù)據(jù)是一個任意字節(jié)的字符串。它不能直接在shell中使用。如果要將非utf-字符保存到數(shù)據(jù)庫中,二進(jìn)制數(shù)據(jù)是唯一的方式。
代碼:查詢和文檔中可以包括任何JavaScript代碼,{“x”:function(){/…/}}
window系統(tǒng)MongoDB安裝
安裝
雙擊“資源\微服務(wù)相關(guān)\配套軟件\mongodb”中的“mongodb-win32-x86_64-2008plus-
ssl-3.2.10-signed.msi” 按照提示步驟安裝即可。安裝完成后,軟件會安裝在C:\Program
Files\MongoDB 目錄中。
我們要啟動的服務(wù)程序就是C:\Program Files\MongoDB\Server\3.2\bin目錄下的
mongod.exe,為了方便我們每次啟動,我將C:\Program
Files\MongoDB\Server\3.2\bin 設(shè)置到環(huán)境變量path中。
啟動
(1)首先打開命令提示符,創(chuàng)建一個用于存放數(shù)據(jù)的目錄
md d:\data
(2)啟動服務(wù)
mongod ‐‐dbpath=d:\data
我們在啟動信息中可以看到,mongoDB的默認(rèn)端口是27017
如果我們想改變默認(rèn)的啟動端口,可以通過--port來指定端口
在命令提示符輸入以下命令即可完成登陸
mongo
退出mongodb
exit
Docker 環(huán)境下MongoDB安裝
略 看講義
常用命令
選擇和創(chuàng)建數(shù)據(jù)庫:
use 數(shù)據(jù)庫名稱
如果數(shù)據(jù)庫不存在則自動創(chuàng)建
以下語句創(chuàng)建spit數(shù)據(jù)庫
use spitdb
插入文檔的語法格式:
db.集合名稱.insert(數(shù)據(jù));
我們這里可以插入以下測試數(shù)據(jù):
db.spit.insert({content:"聽說十次方課程很給力呀",userid:"1011",nickname:"小雅",visits:NumberInt(902)})
查詢集合的語法格式:
db.集合名稱.find()
..........................此處未完待續(xù).................................
Java操作MongoDB
(1)創(chuàng)建工程 mongoDemo, 引入依賴
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb‐driver</artifactId>
<version>3.6.3</version>
</dependency>
</dependencies>
(2)創(chuàng)建測試類
/**
* MongoDb入門小demo
*/
public class MongoDemo {
public static void main(String[] args) {
MongoClient client=new MongoClient("192.168.184.134");//創(chuàng)建連接
MongoDatabase spitdb = client.getDatabase("spitdb");//打開數(shù)據(jù)庫
MongoCollection<Document> spit = spitdb.getCollection("spit");//
獲取集合
FindIterable<Document> documents = spit.find();//查詢記錄獲取文檔集
合
for(Document document:documents){ //
System.out.println("內(nèi)容:"+ document.getString("content"));
System.out.println("用戶ID:"+document.getString("userid"));
System.out.println("瀏覽量:"+document.getInteger("visits"));
}
client.close();//關(guān)閉連接
}
}