NoSQL數(shù)據(jù)庫(kù)一MongoDB基本使用

如今的網(wǎng)站對(duì)數(shù)據(jù)存儲(chǔ)要求越來(lái)越靈活,在這種需求下 NOSQL 也就是非關(guān)系數(shù)據(jù)庫(kù)越來(lái)越流行。所謂非關(guān)系數(shù)據(jù)庫(kù),是指不使用 SQL 語(yǔ)言進(jìn)行數(shù)據(jù)操作的數(shù)據(jù)庫(kù)的統(tǒng)稱。這類數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)時(shí)沒(méi)有固定的模式,不支持?jǐn)?shù)據(jù)表 join 的操作,可以很方便的進(jìn)行橫向擴(kuò)展。非關(guān)系數(shù)據(jù)庫(kù)種類很多,其中 MongoDB 和 redis 應(yīng)用廣泛。

十多年的雷州網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整雷州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“雷州網(wǎng)站設(shè)計(jì)”,“雷州網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

一、MongoDB介紹

MongoDB 是一個(gè)是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。

二、安裝MongoDB

MongoDB安裝很簡(jiǎn)單,無(wú)需下載源文件,可以直接用apt-get命令進(jìn)行安裝。
打開(kāi)終端,輸入以下命令:
sudo apt-get install mongodb
安裝完成后,在終端輸入以下命令查看MongoDB版本:
mongo -version
輸出版本信息,表明安裝成功

啟動(dòng)和關(guān)閉mongodb命令如下:

service mongodb start
service mongodb stop

默認(rèn)設(shè)置MongoDB是隨Ubuntu啟動(dòng)自動(dòng)啟動(dòng)的。
輸入以下命令查看是否啟動(dòng)成功:
pgrep mongo -l #注意:-l是英文字母l,不是阿拉伯?dāng)?shù)字1

卸載MongoDB
sudo apt-get --purge remove mongodb mongodb-clients mongodb-server

三、使用MongoDB

shell命令模式
輸入mongo進(jìn)入shell命令模式,默認(rèn)連接的數(shù)據(jù)庫(kù)是test數(shù)據(jù)庫(kù),在此之前一定要確保你已經(jīng)啟動(dòng)了MongoDB,否則會(huì)出現(xiàn)錯(cuò)誤,啟動(dòng)之后運(yùn)行成功,如下截圖:
NoSQL數(shù)據(jù)庫(kù)一MongoDB基本使用
MongoDB 存儲(chǔ)的文檔記錄是一個(gè) BSON 對(duì)象,類似于 JSON 對(duì)象,由鍵值對(duì)組成。比如一條用戶記錄:

{
    name: "Aiden",
    age: 30,
    email: "luojin@simplecloud.cn"
}

每一個(gè)文檔都有一個(gè) id 字段,該字段是主鍵,用于唯一的確定一條記錄。如果往 MongoDB 中插入數(shù)據(jù)時(shí)沒(méi)有指定 id 字段,那么會(huì)自動(dòng)產(chǎn)生一個(gè) id 字段,該字段的類型是 ObjectId,長(zhǎng)度是 12 個(gè)字節(jié)。在 MongoDB 文檔的字段支持字符串,數(shù)字,時(shí)間戳等類型。一個(gè)文檔最大可以達(dá)到 16M, 可以存儲(chǔ)相當(dāng)多的數(shù)據(jù)。

常用操作命令:
數(shù)據(jù)庫(kù)相關(guān)

  • show dbs:顯示數(shù)據(jù)庫(kù)列表
  • show collections:顯示當(dāng)前數(shù)據(jù)庫(kù)中的集合(類似關(guān)系數(shù)據(jù)庫(kù)中的表table)
  • show users:顯示所有用戶
  • use yourDB:切換當(dāng)前數(shù)據(jù)庫(kù)至yourDB
  • db.help() :顯示數(shù)據(jù)庫(kù)操作命令
  • db.yourCollection.help() :顯示集合操作命令,yourCollection是集合名

先嘗試往 MongoDB 中插入一條數(shù)據(jù):

$ mongo
> use shiyanlou
> db.user.insertOne({name: "Aiden", age: 30, email: "luojin@simplecloud.cn", addr: ["CD", "SH"]})
{
        "acknowledged" : true,
        "insertedId" : ObjectId("59a8034064e0acb13483d512")
}
> show databases;
admin      0.000GB
local      0.000GB
shiyanlou  0.000GB
> show collections;
user

可以看到,在插入數(shù)據(jù)前使用 use 指令,切換到了 shiyanlou 數(shù)據(jù)庫(kù),盡管該數(shù)據(jù)庫(kù)暫時(shí)不存在,但當(dāng)我們插入數(shù)據(jù)后,該數(shù)據(jù)庫(kù)就被自動(dòng)創(chuàng)建了。show databases 和 show collection 分別顯示了當(dāng)前存在的數(shù)據(jù)庫(kù)和當(dāng)前數(shù)據(jù)庫(kù)的所有文檔集合。而且數(shù)據(jù)插入后,自動(dòng)添加了 id 字段。插入多條數(shù)據(jù),可以使用 db.collection.insertMany 方法:

> db.user.insertMany([
... {name: "lxttx", age: 28, email: "lxttx@simplecloud.cn", addr: ["BJ", "CD"]},
... {name: "jin", age: 31, email: "jin@simplecloud.cn", addr: ["GZ", "SZ"]},
... {name: "nan", age: 26, email: "nan@simplecloud.cn", addr: ["NJ", "AH"]}
... ])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("59a8034564e0acb13483d513"),
                ObjectId("59a8034564e0acb13483d514"),
                ObjectId("59a8034564e0acb13483d515")
        ]
}

添加的數(shù)據(jù)其結(jié)構(gòu)是松散的,只要是bson格式均可,列屬性均不固定,根據(jù)添加的數(shù)據(jù)為準(zhǔn)。先定義數(shù)據(jù)再插入,就可以一次性插入多條數(shù)據(jù),運(yùn)行完以上例子,庫(kù)自動(dòng)創(chuàng)建,這也說(shuō)明 MongoDB 不需要預(yù)先定義 collection ,在第一次插入數(shù)據(jù)后,collection 會(huì)自動(dòng)的創(chuàng)建。

查詢數(shù)據(jù)可以使用 db.collection.find 方法,可以指定查詢過(guò)濾條件:

> db.user.find()
{ "_id" : ObjectId("59a8034064e0acb13483d512"), "name" : "Aiden", "age" : 30, "email" : "luojin@simplecloud.cn", "addr" : [ "CD", "SH" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d513"), "name" : "lxttx", "age" : 28, "email" : "lxttx@simplecloud.cn", "addr" : [ "BJ", "CD" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d514"), "name" : "jin", "age" : 31, "email" : "jin@simplecloud.cn", "addr" : [ "GZ", "SZ" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d515"), "name" : "nan", "age" : 26, "email" : "nan@simplecloud.cn", "addr" : [ "NJ", "AH" ] }

> db.user.find({name: "jin"})
{ "_id" : ObjectId("59a8034564e0acb13483d514"), "name" : "jin", "age" : 31, "email" : "jin@simplecloud.cn", "addr" : [ "GZ", "SZ" ] }

> db.user.find({age: {$gt: 30}})
{ "_id" : ObjectId("59a8034564e0acb13483d514"), "name" : "jin", "age" : 31, "email" : "jin@simplecloud.cn", "addr" : [ "GZ", "SZ" ] }

> db.user.find({addr: "CD"})
{ "_id" : ObjectId("59a8034064e0acb13483d512"), "name" : "Aiden", "age" : 30, "email" : "luojin@simplecloud.cn", "addr" : [ "CD", "SH" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d513"), "name" : "lxttx", "age" : 28, "email" : "lxttx@simplecloud.cn", "addr" : [ "BJ", "CD" ] }

上面例子中,我們先通過(guò) db.user.find() 獲取到了之前插入的全部數(shù)據(jù)。接著使用不同的過(guò)濾條件進(jìn)行了查詢,其中有一些查詢?nèi)?{age: {$gt: 30}} 表示查詢年齡大于 30 的用戶。還可以發(fā)現(xiàn)查詢數(shù)組中是否存在某一元素也非常方便,上面的例子中查詢出了所有地址含有 CD 用戶。

MongoDB 的查詢功能非常強(qiáng)大,可以組合各種查詢條件,更多的使用方法可以學(xué)習(xí)實(shí)驗(yàn)樓的其他課程。更新數(shù)據(jù)主要通過(guò) db.user.updateOne 或者 db.user.updateMany 方法,前者更新一條記錄,后者更新多條記錄:

> db.user.updateOne(
... {name: "Aiden"},
... {$set: {age: 29, addr: ["CD", "SH", "BJ"]}}
... )
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.user.find({name: "Aiden"})
{ "_id" : ObjectId("59a8034064e0acb13483d512"), "name" : "Aiden", "age" : 29, "email" : "luojin@simplecloud.cn", "addr" : [ "CD", "SH", "BJ" ] }

可以看到成功的更新了一條記錄。刪除數(shù)據(jù)也非常簡(jiǎn)單,可以通過(guò) db.user.deleteMany 或db.user.deleteOne 方法:

> db.user.deleteMany({addr: "CD"})
{ "acknowledged" : true, "deletedCount" : 2 }
> db.user.find()
{ "_id" : ObjectId("59a8034564e0acb13483d514"), "user" : "jin", "age" : 31, "email" : "jin@simplecloud.cn", "addr" : [ "GZ", "SZ" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d515"), "user" : "nan", "age" : 26, "email" : "nan@simplecloud.cn", "addr" : [ "NJ", "AH" ] }

上面的命令成功的刪除所有地址包含 "CD" 的用戶,共刪除了兩條記錄。

名稱欄目:NoSQL數(shù)據(jù)庫(kù)一MongoDB基本使用
網(wǎng)站鏈接:http://muchs.cn/article46/pdggeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、虛擬主機(jī)、手機(jī)網(wǎng)站建設(shè)外貿(mào)網(wǎng)站建設(shè)、建站公司、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)