摘要:歷史年來的下載,安裝訪問官網下載其中文社區一個可視化工具或者因為某些緣故,導致燈塔國的東東很慢很慢一直感覺安裝的。。。這意味著可以往集合里插入任何的格式。
MongDB
MongDB一種面向文檔的數據庫管理系統,由C++寫成。
官網 https://www.mongodb.com/
github https://github.com/mongodb/mongo
NoSQL不使用SQL作為查詢語言。其數據的儲存可以不需要固定的表格形式。也會經常的被使用sql的join
特點通常提供弱的一致性保護, 但保證最終的一致性。
關系型數據庫遵守的特點ACID
即 A 原子性 事物中的操作要么全做,要么都做
C 一致性 數據庫一直要處于一致的狀態
I 獨立性 并發事物之間不會相互影響(即 三級封鎖協議,鎖的形成)
D 持久性 數據庫提交完成以后持久保存
分布式系統是由多臺計算機和通信軟件組成,通過網絡相互連接。分布式系統是建立在網絡之上的系統。分布式系統的區別在于操作系統。
分布式系統的優點可靠性(容錯機制)可擴展性(可以隨意的增加更多的機器)資源共享(數據之間可以共享)靈活性(由于該系統是非常靈活的,易于安裝)更快的速度(分布式計算擁有更快的計算能力,易于進行更多的計算)開放系統(由于其系統是開放,本地和遠程都可直接訪問)更高的性能(相比于集群,擁有更高的性能)
缺點故障不易排除,擁有更少的軟件,網絡問題,安全性問題
RDBMS 和 NoSQL RDBMS為關系型數據庫的基礎
擁有高度的組織化結構數據
擁有結構化查詢語言
數據和關系都儲存在多帶帶的表中
嚴格的一致性
基礎的事物
沒有聲明式查詢語言
沒有預定義模式
鍵值對儲存,列儲存,文檔儲存,圖形數據庫
最終的一致性而不保證過程的一致性
非結構化和不可預知的數據
CAP定理
高性能,高可用性和高伸縮性
CAP定理被稱為布魯爾定理,對于分布式系統來說,不可能滿足以下三點
一致性 (等同于所有節點訪問同一份最新數據的副本)
可用性 (每次請求都能獲取到非錯誤的響應)
分區容錯性(系統中任意錯誤都不會導致錯誤的丟失)
更多 https://ja.wikipedia.org/wiki...
根據CAP原理 將數據庫分類如下 滿足 CA 原則、滿足 CP 原則和滿足 AP 原則的三大類
BASE:Basically Available, Soft-state, Eventually Consistent。
BASE是NoSQL數據庫通常對可用性及一致性的弱要求原則
列儲存 | 按照列儲存數據 | 代表
--------|--------------| Hbase
文檔儲存 | 類似于JSON的格式,儲存的內容是文檔類型的,這樣有機會對某些字段建立索引,實現關系數據庫的某些功能。| Mongdb
key-value 儲存 | 通過key快速查詢到value | Redis
圖儲存 | 圖形儲存 | Flockdb 來自于推特
對象儲存 | 通過面向對象的語法來操作數據庫 | Versant
xml數據 | 儲存XML數據 | http://basex.org/
Google((^__^) 嘻嘻……)
http://digg.com/
https://www.mheducation.com/h...
http://digital.vpr.net
https://foursquare.com/
由C++編寫,MongoDB將數據儲存為一個文檔
數據結構由鍵值對組成。其文檔類似于JSON對象
豐富的表達式,支持任何索引,負載的增加,批量處理和聚合操作等等。。。。
歷史2007年來的
MongDB下載,安裝訪問官網下載 https://www.mongodb.com/downl...
其中文社區 http://www.mongoing.com/
一個可視化工具 https://www.nosqlclient.com/
或者 http://mms.litixsoft.de/index...
因為某些緣故,導致燈塔國的東東很慢很慢
一直感覺安裝的。。。很炫酷。。
沒辦法。。。燈塔國的。。好吧,安裝完畢
PS C:> cd data PS C:data> ls PS C:data> mkdir db 目錄: C:data Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2018/7/31 2:37 db PS C:data> ls 目錄: C:data Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2018/7/31 2:37 db PS C:data> cd db PS C:datadb>設置環境變量
C:Program FilesMongoDBServer4.0bin
打開PowershellPS C:Program FilesMongoDBServer4.0in> mongod -dbpath c:datadb
執行mongod創建數據目錄
連接PS C:UsersmingmDesktop> mongo.exe MongoDB shell version v4.0.0 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 4.0.0 Server has startup warnings: 2018-07-31T02:32:28.615+0800 I CONTROL [initandlisten] 2018-07-31T02:32:28.616+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2018-07-31T02:32:28.616+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2018-07-31T02:32:28.616+0800 I CONTROL [initandlisten] --- Enable MongoDB"s free cloud-based monitoring service to collect and display metrics about your deployment (disk utilization, CPU, operation statistics, etc). The monitoring data will be available on a MongoDB website with a unique URL created for you. Anyone you share the URL with will also be able to view this page. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you. To enable free monitoring, run the following command: db.enableFreeMonitoring() --- >可視化連接
mongodb://127.0.0.1:27017
將其復制上去就行了
ok好啦,至此安裝完成
這是一個JavaScript shell
(^o^)/ 瞬間擁有親切感。
js的語言終于可以再次用上
sql | mongodb | 解釋/說明 |
---|---|---|
databass | databass | 數據庫 |
table | collection | 數據庫表/集合 |
row | document | 行/文檔 |
colunm | field | 字段/域 |
index | index | 索引 |
table joins | 表連接 | |
primary key | primary key | 主鍵/nongodb自動將_id設置為主鍵 |
一張圖說明
數據插入集合中,該文檔就會被創建
合法的集合名集合名不能是空字符串
集合名不能含有0
集合名不能以system開頭
創建的集合名不能有保留字,因為系統生成的集合包含有$
數據庫的信息存儲在集合中,使用了系統命名的空間
mongodb數據類型 Objectid唯一主鍵包含12位。
前 4 個字節表示創建 unix 時間戳,格林尼治時間 UTC 時間,比北京時間晚了 8 個小時 接下來的 3 個字節是機器標識碼 緊接的兩個字節由進程 id 組成 PID 最后三個字節是隨機數
類似于這樣的
5b5f65cc12df191848c2c72f字符串
字符串為utf-8編碼
事件戳前32位是一個 time_t 值(與Unix新紀元相差的秒數) 后32位是在某秒中操作的一個遞增的序數日期
格林尼治時間
> var mydate1 = new Date() > mydatel ISODate("2018-07-30T19:26:17.080Z") >
> Date() Tue Jul 31 2018 03:27:07 GMT+0800 >連接
mongodb:
創建數據庫> use Date switched to db Date > db Date >
查看所有數據庫
> show dbs admin 0.000GB config 0.000GB local 0.000GB >
由于不存在,需要顯示,向其插入數據
> db.Date.insert({"name":"ming"}); WriteResult({ "nInserted" : 1 }) > show dbs; Date 0.000GB admin 0.000GB config 0.000GB local 0.000GB >刪除數據庫
> show dbs; Date 0.000GB admin 0.000GB config 0.000GB local 0.000GB > use Date switched to db Date > db.dropDatabase() { "dropped" : "Date", "ok" : 1 } >
> show dbs admin 0.000GB config 0.000GB local 0.000GB >刪除集合
> show dbs; admin 0.000GB config 0.000GB local 0.000GB > use local switched to db local > show tabls; 2018-07-31T03:34:06.601+0800 E QUERY [js] Error: don"t know how to show [tabls] : shellHelper.show@src/mongo/shell/utils.js:1043:11 shellHelper@src/mongo/shell/utils.js:755:15 @(shellhelp2):1:1 > show tables; mycoll startup_log > db.mycoll.drop(); true > show tables; startup_log >創建集合
> show dbs; admin 0.000GB config 0.000GB local 0.000GB > use local switched to db local > db.createCollection("ming"); { "ok" : 1 } > show collections; ming startup_log >
在MongoDB中,不需要創建集合,在插入一些文檔的時候,會自動創建集合
> db.mycol2.insert({"name":"ming"}); WriteResult({ "nInserted" : 1 }) > show collections; ming mycol2 startup_log刪除集合
> show dbs admin 0.000GB config 0.000GB local 0.000GB > use local switched to db local > show collections; ming mycol2 startup_log > db.mycol2.drop(); true > show collections; ming startup_log >插入文檔
即插入row
所有的儲存格式是一種JSON格式的
> db.col.insert({title:"ming", ... ming:"sdfdf"}); WriteResult({ "nInserted" : 1 }) > db.col.find(); { "_id" : ObjectId("5b5f6a0ed595bb04cbe14b94"), "title" : "ming", "ming" : "sdfdf" } >
也可以將數據定義為一種變量
都是js的語法。不難,很好上手的
還有一個方法是 insertOne 以及insertMany 分別插入一行或者多行
使用update()的方法進行更新
> db.col.insert({title:"ming",ming:"ming"}); WriteResult({ "nInserted" : 1 }) > db.col.find(); { "_id" : ObjectId("5b5f6a0ed595bb04cbe14b94"), "title" : "ming", "ming" : "sdfdf" } { "_id" : ObjectId("5b5f6b27d595bb04cbe14b95"), "title" : "ming", "ming" : "ming" } > db.col.update({title:ming, ming:"ming"},{$set:{"title":"ming",ming:"sferfer"}}); 2018-07-31T03:49:28.376+0800 E QUERY [js] ReferenceError: ming is not defined : @(shell):1:16 > db.col.update({title:"ming"},{$set:{"title":"seferf"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.col.find(); { "_id" : ObjectId("5b5f6a0ed595bb04cbe14b94"), "title" : "seferf", "ming" : "sdfdf" } { "_id" : ObjectId("5b5f6b27d595bb04cbe14b95"), "title" : "ming", "ming" : "ming" } > db.col.find().pretty(); { "_id" : ObjectId("5b5f6a0ed595bb04cbe14b94"), "title" : "seferf", "ming" : "sdfdf" } { "_id" : ObjectId("5b5f6b27d595bb04cbe14b95"), "title" : "ming", "ming" : "ming" } >
使用save()替換其方法
> db.col.find().pretty(); { "_id" : ObjectId("5b5f6a0ed595bb04cbe14b94"), "title" : "seferf", "ming" : "sdfdf" } { "_id" : ObjectId("5b5f6b27d595bb04cbe14b95"), "title" : "ming", "ming" : "ming" } > db.col.save({_id: ObjectId("5b5f6a0ed595bb04cbe14b94"), title:"1111"}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.col.find().pretty(); { "_id" : ObjectId("5b5f6a0ed595bb04cbe14b94"), "title" : "1111" } { "_id" : ObjectId("5b5f6b27d595bb04cbe14b95"), "title" : "ming", "ming" : "ming" } >
同樣的updateOne()和updateMany()同樣可以更新一個或者多個文檔
更新的標識仍然是$set
刪除全部文檔deleteMany(),刪除一個文檔deleteOne()
> db.col.find().pretty(); { "_id" : ObjectId("5b5f6a0ed595bb04cbe14b94"), "title" : "1111" } { "_id" : ObjectId("5b5f6b27d595bb04cbe14b95"), "title" : "ming", "ming" : "ming" } > db.col.deleteOne({title:"ming"}); { "acknowledged" : true, "deletedCount" : 1 } > db.col.find().pretty(); { "_id" : ObjectId("5b5f6a0ed595bb04cbe14b94"), "title" : "1111" } >查詢文檔
> show collections; col ming startup_log > db.ming.find().pretty(); > db.ming.insert(ming:"sfrgedrg"); 2018-07-31T04:01:45.661+0800 E QUERY [js] SyntaxError: missing ) after argument list @(shell):1:19 > db.ming.insert({ming:"sdfrf"}); WriteResult({ "nInserted" : 1 }) > db.ming.find().pretty(); { "_id" : ObjectId("5b5f6eb7d595bb04cbe14b96"), "ming" : "sdfrf" } >and條件
> db.ming.find().pretty(); { "_id" : ObjectId("5b5f6eb7d595bb04cbe14b96"), "ming" : "sdfrf" } { "_id" : ObjectId("5b5f6f0ad595bb04cbe14b97"), "name" : "refgerfg" } { "_id" : ObjectId("5b5f6f40d595bb04cbe14b98"), "x" : 222, "y" : 44444 } { "_id" : ObjectId("5b5f6f50d595bb04cbe14b99"), "x" : 4444, "y" : 22222 } > db.ming.find({x:222, y:4444}); > db.ming.find({x:222, y:4444}).pretty(); > db.ming.find({x:222, y:44444}).pretty(); { "_id" : ObjectId("5b5f6f40d595bb04cbe14b98"), "x" : 222, "y" : 44444 } >
直接,即可
OR條件使用$or即可
> db.ming.find({ $or:[{x:222}, {x:4444}] }); { "_id" : ObjectId("5b5f6f40d595bb04cbe14b98"), "x" : 222, "y" : 44444 } { "_id" : ObjectId("5b5f6f50d595bb04cbe14b99"), "x" : 4444, "y" : 22222 } >聯合使用
sql示例
where likes>50 AND (by = "ming" OR title = "ming")
db.ming.find(like: {$gt:50}, $or[{by:"ming"}, {title:"ming"}]);條件操作符
> $gt < $lt >= $gte <= $lte
db.col.find({like: {$gt: 100}});
類比sql
select * from db.col where like > 100;博客
www.iming.info
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19325.html
摘要:安裝全過程環境基本情況我是在電腦下安裝的系統位,這個也是導致我安裝的時候出現異常提示,原因可能是的版本是位的,我應該再找一個位的,但事實上我找不到。 簡述 之前講了一些關于MongoDB的知識,出人意料的受歡迎,也讓我很吃驚,所以今天打算分享一些我在自己計算機的虛擬機的centos系統下安裝MongoDB的經歷,希望感興趣的你們在安裝MongoDB的時候出現問題可以來看看我是怎么安裝的...
摘要:安裝全過程環境基本情況我是在電腦下安裝的系統位,這個也是導致我安裝的時候出現異常提示,原因可能是的版本是位的,我應該再找一個位的,但事實上我找不到。 簡述 之前講了一些關于MongoDB的知識,出人意料的受歡迎,也讓我很吃驚,所以今天打算分享一些我在自己計算機的虛擬機的centos系統下安裝MongoDB的經歷,希望感興趣的你們在安裝MongoDB的時候出現問題可以來看看我是怎么安裝的...
摘要:安裝全過程環境基本情況我是在電腦下安裝的系統位,這個也是導致我安裝的時候出現異常提示,原因可能是的版本是位的,我應該再找一個位的,但事實上我找不到。 簡述 之前講了一些關于MongoDB的知識,出人意料的受歡迎,也讓我很吃驚,所以今天打算分享一些我在自己計算機的虛擬機的centos系統下安裝MongoDB的經歷,希望感興趣的你們在安裝MongoDB的時候出現問題可以來看看我是怎么安裝的...
閱讀 1297·2021-11-22 09:34
閱讀 2162·2021-10-08 10:18
閱讀 1724·2021-09-29 09:35
閱讀 2453·2019-08-29 17:20
閱讀 2137·2019-08-29 15:36
閱讀 3398·2019-08-29 13:52
閱讀 775·2019-08-29 12:29
閱讀 1183·2019-08-28 18:10