中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

NoSQL數據庫一MongoDB基本使用

發布時間:2020-06-13 00:21:41 來源:網絡 閱讀:838 作者:cqtesting 欄目:MongoDB數據庫

如今的網站對數據存儲要求越來越靈活,在這種需求下 NoSQL 也就是非關系數據庫越來越流行。所謂非關系數據庫,是指不使用 SQL 語言進行數據操作的數據庫的統稱。這類數據庫存儲數據時沒有固定的模式,不支持數據表 join 的操作,可以很方便的進行橫向擴展。非關系數據庫種類很多,其中 MongoDBRedis 應用廣泛。

一、MongoDB介紹

MongoDB 是一個是一個基于分布式文件存儲的數據庫,介于關系數據庫和非關系數據庫之間,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

二、安裝MongoDB

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

啟動和關閉mongodb命令如下:

service mongodb start
service mongodb stop

默認設置MongoDB是隨Ubuntu啟動自動啟動的。
輸入以下命令查看是否啟動成功:
pgrep mongo -l #注意:-l是英文字母l,不是阿拉伯數字1

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

三、使用MongoDB

shell命令模式
輸入mongo進入shell命令模式,默認連接的數據庫是test數據庫,在此之前一定要確保你已經啟動了MongoDB,否則會出現錯誤,啟動之后運行成功,如下截圖:
NoSQL數據庫一MongoDB基本使用
MongoDB 存儲的文檔記錄是一個 BSON 對象,類似于 JSON 對象,由鍵值對組成。比如一條用戶記錄:

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

每一個文檔都有一個 id 字段,該字段是主鍵,用于唯一的確定一條記錄。如果往 MongoDB 中插入數據時沒有指定 id 字段,那么會自動產生一個 id 字段,該字段的類型是 ObjectId,長度是 12 個字節。在 MongoDB 文檔的字段支持字符串,數字,時間戳等類型。一個文檔最大可以達到 16M, 可以存儲相當多的數據。

常用操作命令:
數據庫相關

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

先嘗試往 MongoDB 中插入一條數據:

$ 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

可以看到,在插入數據前使用 use 指令,切換到了 shiyanlou 數據庫,盡管該數據庫暫時不存在,但當我們插入數據后,該數據庫就被自動創建了。show databases 和 show collection 分別顯示了當前存在的數據庫和當前數據庫的所有文檔集合。而且數據插入后,自動添加了 id 字段。插入多條數據,可以使用 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")
        ]
}

添加的數據其結構是松散的,只要是bson格式均可,列屬性均不固定,根據添加的數據為準。先定義數據再插入,就可以一次性插入多條數據,運行完以上例子,庫自動創建,這也說明 MongoDB 不需要預先定義 collection ,在第一次插入數據后,collection 會自動的創建。

查詢數據可以使用 db.collection.find 方法,可以指定查詢過濾條件:

> 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" ] }

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

MongoDB 的查詢功能非常強大,可以組合各種查詢條件,更多的使用方法可以學習實驗樓的其他課程。更新數據主要通過 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" ] }

可以看到成功的更新了一條記錄。刪除數據也非常簡單,可以通過 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" 的用戶,共刪除了兩條記錄。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呼伦贝尔市| 简阳市| 灌南县| 宿州市| 遂平县| 都兰县| 囊谦县| 南澳县| 福鼎市| 峨边| 建水县| 吉安市| 林西县| 陆丰市| 嘉定区| 西安市| 海盐县| 台湾省| 通州市| 双峰县| 称多县| 北宁市| 鹤壁市| 噶尔县| 吴桥县| 突泉县| 辽中县| 大安市| 金堂县| 长武县| 疏勒县| 咸阳市| 揭阳市| 汝阳县| 福州市| 宁化县| 太和县| 南宫市| 大理市| 龙泉市| 法库县|