摘要:價(jià)格目前的非關(guān)系型數(shù)據(jù)庫(kù)基本都是免費(fèi)的功能實(shí)際開發(fā)中,很多業(yè)務(wù)需求,其實(shí)并不需要完整的關(guān)系型數(shù)據(jù)庫(kù)功能,非關(guān)系型數(shù)據(jù)庫(kù)的功能就足夠使用了。目的是為應(yīng)用提供擴(kuò)展的高性能的數(shù)據(jù)存儲(chǔ)方案。我們平時(shí)大多還是使用修改器來(lái)修改下一節(jié)我們來(lái)認(rèn)識(shí)修改器
我們先來(lái)了解一下非關(guān)系型數(shù)據(jù)庫(kù)和關(guān)系型數(shù)據(jù)庫(kù),首先需要了解一下關(guān)系型數(shù)據(jù)庫(kù),比如,我們所熟知的 Oracle、mysql等。
關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)
實(shí)質(zhì): 非關(guān)系型數(shù)據(jù)庫(kù)的實(shí)質(zhì),其實(shí)非關(guān)系型數(shù)據(jù)庫(kù)是傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的功能的閹割版,通過(guò)減少用不到的或者很少使用的功能,來(lái)大幅度提高產(chǎn)品的性能。
價(jià)格:目前的非關(guān)系型數(shù)據(jù)庫(kù)基本都是免費(fèi)的
功能: 實(shí)際開發(fā)中,很多業(yè)務(wù)需求,其實(shí)并不需要完整的關(guān)系型數(shù)據(jù)庫(kù)功能,非關(guān)系型數(shù)據(jù)庫(kù)的功能就足夠使用了。這種情況下,使用性能更高、成本更低的非關(guān)系型數(shù)據(jù)庫(kù)當(dāng)然是更明智的選擇。
MongoDB簡(jiǎn)介:Mongodb 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),由C++編寫。 目的是為WEB應(yīng)用提供擴(kuò)展的高性能的數(shù)據(jù)存儲(chǔ)方案。它是介于關(guān)系型和非關(guān)系型數(shù)據(jù)庫(kù)中間的產(chǎn)品,他支持的數(shù)據(jù)結(jié)構(gòu)比較松散,是類似于json的Bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。
mongo shell
// 啟動(dòng)mongodb 之后 var x="Hello World" print(x) // 注意這里雖然執(zhí)行的時(shí)js指令,但是不能使用console.log , 只能使用print() function jspang(){ return "JSPang"; } print(jspang())
MongoDB的存儲(chǔ)結(jié)構(gòu)
以前我們的關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)都是頂層是庫(kù),庫(kù)下面是表,表下面是數(shù)據(jù)。但是MongoDB有所不同,庫(kù)下面是集合,集合下面是文檔,可以看下面這張圖進(jìn)行了解一下。
基礎(chǔ)Shell命令
show dbs :顯示已有數(shù)據(jù)庫(kù),如果你剛安裝好,會(huì)默認(rèn)有l(wèi)ocal、admin(config),這是MongoDB的默認(rèn)數(shù)據(jù)庫(kù),我們?cè)谛陆◣?kù)時(shí)是不允許起這些名稱的。
use admin: 進(jìn)入數(shù)據(jù)庫(kù),也可以理解成為使用數(shù)據(jù)庫(kù)
show collections: 顯示數(shù)據(jù)庫(kù)中的集合
db:顯示當(dāng)前位置,也就是你當(dāng)前使用的數(shù)據(jù)庫(kù)名稱,這個(gè)命令算是最常用的,因?yàn)槟阍谧魅魏尾僮鞯臅r(shí)候都要先查看一下自己所在的庫(kù),以免造成操作錯(cuò)誤。
用js文件寫mongo命令
首先啟動(dòng) mongodb
// getTask.js var username = "zjj"; var time = Date.parse(new Date()); var jsonData = {"loginUser": username, "loginTime": time} var db = connect("login") // 連接數(shù)據(jù)庫(kù) db.login.insert(jsonData) print("log print success")
在該目錄下執(zhí)行 mongo getTask.js
批量注入
// 批量數(shù)據(jù)插入是以數(shù)組的方式進(jìn)行的 db.test.insert([ {"_id":1}, {"_id":2}, {"_id":3} ]); // 注意一次插入不要超過(guò)48M,向.zip和大圖片什么的盡量用靜態(tài)存儲(chǔ),MongoDB存儲(chǔ)靜態(tài)路徑就好,這也算是一個(gè)規(guī)則。 // 使用數(shù)組批量插入的效率比使用循環(huán)插入的效率高的多
Update常見錯(cuò)誤
// demo01.js var workmate1={ name:"JSPang", age:33, sex:1, job:"前端", skill:{ skillOne:"HTML+CSS", SkillTwo:"JavaScript", SkillThree:"PHP" }, regeditTime:new Date() } var workmate2={ name:"ShengLei", age:30, sex:1, job:"JAVA后端", skill:{ skillOne:"HTML+CSS", SkillTwo:"J2EE", SkillThree:"PPT" }, regeditTime:new Date() } var workmate3={ name:"MinJie", age:20, sex:1, job:"UI設(shè)計(jì)", skill:{ skillOne:"PhotoShop", SkillTwo:"UI", SkillThree:"Word+Excel+PPT" }, regeditTime:new Date() } var db=connect("company") var workmateArray=[workmate1,workmate2,workmate3] db.workmate.insert(workmateArray) print("[SUCCESS]: The data was inserted successfully."); // 構(gòu)造數(shù)據(jù) // 運(yùn)行demo01 mongo > load("./demo01.js");
var db=connect("company") db.workmate.update({name:"MinJie"},{sex:0}) print("[update]: The data was updated successfully"); // 我們會(huì)發(fā)現(xiàn)需要修改的那條數(shù)據(jù)已經(jīng)被大變樣了,只剩下了只有 sex:0
正確的修改方法
// demo02.js var db=connect("company") var workmate3={ name:"MinJie", age:20, sex:0, job:"UI設(shè)計(jì)", skill:{ skillOne:"PhotoShop", SkillTwo:"UI", SkillThree:"Word+Excel+PPT" }, regeditTime:new Date() } db.workmate.update({name:"MinJie"},workmate3) print("[update]: The data was updated successfully");
但是如果每次都這么來(lái)改,多麻煩呢。我們平時(shí)大多還是使用update修改器來(lái)修改
下一節(jié)我們來(lái)認(rèn)識(shí)update修改器
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19219.html
摘要:命令檢查創(chuàng)建的集合命令從數(shù)據(jù)庫(kù)中刪除集合。命令從集合查詢數(shù)據(jù)將在非結(jié)構(gòu)化的方式顯示所有的文件。如果顯示結(jié)果是格式化的,那么可以用除了方法還有方法,僅返回一個(gè)文檔。文檔排序方法,方法接受一個(gè)包含字段列表以及排序順序的文檔。 MongoDB啟動(dòng)服務(wù)器 第一步:下載安裝包 第二步:解壓下載到的安裝包,找到bin目錄下面全部.exe文件 第三步:在該目錄下新建data文件夾,它將會(huì)作為數(shù)據(jù)存...
摘要:復(fù)制一份,命名為,修改文件內(nèi)容如下注意改為我們第一步創(chuàng)建的目錄,端口號(hào)改為這個(gè)隨意,只要該端口沒(méi)被占用即可,表示這是一個(gè)配置服務(wù)器,另外由于我們的配置服務(wù)器要做成備份集,所以要設(shè)置。 分片是指將數(shù)據(jù)拆分,拆分后存放在不同的機(jī)器上的過(guò)程,以此來(lái)降低單個(gè)服務(wù)器的壓力,同時(shí)也解決單個(gè)服務(wù)器硬盤空間不足的問(wèn)題,讓我們可以用廉價(jià)的機(jī)器實(shí)現(xiàn)高性能的數(shù)據(jù)架構(gòu)。有的小伙伴不理解分片和副本集的差異,一言...
摘要:小結(jié)是聚合管道查詢使用的方法,參數(shù)是數(shù)組,每個(gè)數(shù)組元素就是一個(gè),中運(yùn)用操作符對(duì)數(shù)據(jù)進(jìn)行處理后再交由下一個(gè),直到?jīng)]有下個(gè),就輸出最終的結(jié)果,而數(shù)據(jù)的處理則是通過(guò)使用操作符,本文先簡(jiǎn)單介紹了一下有哪些常用的操作符,下一篇再詳細(xì)說(shuō)明。 前言:一般查詢可以通過(guò)find方法,但如果是比較復(fù)雜的查詢或者數(shù)據(jù)統(tǒng)計(jì)的話,find可能就無(wú)能為力了,這時(shí)也許你需要的是aggregate. 什么是聚合管道(...
摘要:開公眾號(hào)差不多兩年了,有不少原創(chuàng)教程,當(dāng)原創(chuàng)越來(lái)越多時(shí),大家搜索起來(lái)就很不方便,因此做了一個(gè)索引幫助大家快速找到需要的文章系列處理登錄請(qǐng)求前后端分離一使用完美處理權(quán)限問(wèn)題前后端分離二使用完美處理權(quán)限問(wèn)題前后端分離三中密碼加鹽與中異常統(tǒng)一處理 開公眾號(hào)差不多兩年了,有不少原創(chuàng)教程,當(dāng)原創(chuàng)越來(lái)越多時(shí),大家搜索起來(lái)就很不方便,因此做了一個(gè)索引幫助大家快速找到需要的文章! Spring Boo...
閱讀 3517·2021-11-18 10:07
閱讀 1614·2021-11-04 16:08
閱讀 1564·2021-11-02 14:43
閱讀 1122·2021-10-09 09:59
閱讀 879·2021-09-08 10:43
閱讀 1147·2021-09-07 09:59
閱讀 1004·2019-12-27 11:56
閱讀 1084·2019-08-30 15:56