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