十次方項目第三天(MongoDB)

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)如下圖:

23185679.png

23265942.png

數(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)閉連接
    }
}

SpringDataMongoDB

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

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

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,273評論 2 89
  • 不知不覺,在這已經(jīng)一年多了,再有兩個月估計我們又要去一個沒有去過的地方。昨天項目部領(lǐng)導(dǎo)組織開了一次全體新工以上人員...
    煙花雨下的諾言閱讀 181評論 0 0
  • 《一百零一 》
    08df750ffee6新思維閱讀 162評論 0 0
  • 冥生經(jīng)過一夜的運(yùn)功調(diào)息之后,身體狀態(tài)恢復(fù)大半,恢復(fù)如此之快,與圣醫(yī)留下的良藥有著密不可分的關(guān)系,他行走江湖...
    南門掃地閱讀 240評論 0 0
  • preface: OC里面我們使用 CocoaPods 來集中管理我們常用的第三方庫,但是在Swift里面我會就會...
    娘親Joanna閱讀 404評論 0 0

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