學習MongoDB
一、安裝
在window的環境下安裝MongoDB:
MongoDB下載地址
點擊下載即可
- 安裝軟件
- 啓動mongo服務,每次啓動MongoDB的服務的時候都需要以管理員的身份在命令行中輸入以下代碼:
你安裝的MongoDB的bin文件下 > mongod --dbpath "d://mongodb//data" --logpath "d://mongodb//log//mongodb.log" --logappend
mongod --dbpath 命令是創建數據庫文件的存放位置,啓動mongodb服務時需要先確定數據庫文件存放的位置,否則系統不會自動創建,啓動會不成功。 --logpath 表示日誌文件存放的路徑 --logappend 表示以追加的方式寫日誌文件
- 點擊軟件所在的地方的 bin 文件夾下的 mongo.exe 運行軟件
出現彈窗就可以開始輸入一些命令了,例如:
- 在安裝MongoDB的時候會要求你下載MongoDB Compass 這是一個MongoDB數據庫的可視化工具
默認的端口號是27017,點擊 connect 鏈接數據庫,就可以看到你本地的數據庫的相關數據了,可以用這個工具去添加數據庫的表,也可以用shell命令行來添加
MongoDB基本的命令
show dbs
: 顯示已有數據庫,如果你剛安裝好,會默認有local、admin(config),這是MongoDB的默認數據庫,我們在新建庫時是不允許起這些名稱的。use 數據庫的名字
: 進入數據,也可以理解成爲使用數據庫。成功會顯示:switched to db 數據庫的名字,也有創建數據庫的功能。show collections
: 顯示數據庫中的集合(關係型中叫表,我們要逐漸熟悉)。db
: 顯示當前位置,也就是你當前使用的數據庫名稱,這個命令算是最常用的,因爲你在作任何操作的時候都要先查看一下自己所在的庫,以免造成操作錯誤。use db(建立數據庫)
:use不僅可以進入一個數據庫,如果你敲入的庫不存在,它還可以幫你建立一個庫。但是在沒有集合前,它還是默認爲空。db.集合.insert( )
:新建數據集合和插入文件(數據),當集合沒有時,這時候就可以新建一個集合,並向裏邊插入數據。Demo:db.user.insert({“name”:”jspang”})db.集合.find( )
:查詢所有數據,這條命令會列出集合下的所有數據,可以看到MongoDB是自動給我們加入了索引值的。Demo:db.user.find()db.集合.findOne( )
:查詢第一個文件數據,這裏需要注意的,所有MongoDB的組合單詞都使用首字母小寫的駝峯式寫法。db.集合.update({查詢},{修改})
:修改文件數據,第一個是查詢條件,第二個是要修改成的值。這裏注意的是可以多加文件數據項的,比如下面的例子。
用JS寫MongoDB執行語句
goTask.js文件
var userName="Emma"; //聲明一個登錄名
var timeStamp=Date.parse(new Date()); //聲明登錄時的時間戳
var jsonDdatabase={"loginUser":userName,"loginTime":timeStamp}; //組成JSON字符串
var url = "mongodb://localhost:27017/admin";
var db = connect(url); //鏈接數據庫
db.login.insert(jsonDdatabase); //插入數據
print('connect success'); //沒有錯誤顯示成功
然後像執行node文件那樣,在這個文件所在的地方打開命令行,執行語句是 mongo js文件名
就會看到上面的結果。這就實現了簡單的操作數據庫
MongoDB用js實現增刪改查
// 批量插入
var db = connect('mongodb://localhost:27017/admin'); //鏈接數據庫
var user1 = {
"_id" : 1,
"name" :"Emma",
"sex" : 0,
"age" : 24,
"skill" : [ "web前端","javascript"]
}
var user2 = {
"_id" : 2,
"name" :"Jack",
"sex" : 0,
"age" : 26,
"skill" : [ "Java","PHP"]
}
var user3 = {
"_id" : 3,
"name" :"Meg",
"sex" : 1,
"age" : 20,
"skill" : [ "UI","Photoshop"]
}
// 表格的名字叫test
db.test.insert([user1,user2,user3])
執行之後打開MongoDB compass就可以看到admin 下多了一個表格叫 test,裏面有你剛纔添加的內容
修改:
var db = connect('user'); //鏈接數據庫
db .test.update({"name":"Emma"},{"$set":{sex:1,age:21}})
// $unset用於將key刪除
db.test.update({"name":"Emma"},{$unset:{"age" : ' ' }})
// $inc對數字進行計算 它是對value值的修改,但是修改的必須是數字,字符串是不起效果的。
// 我們現在要對MiJie的年齡減去2歲,就可以直接用$inc來操作。
db.test.update({"name":"Emma"},{$inc:{"age":-3}})
// multi選項 multi是有ture和false兩個值,true代表全部修改,false代表只修改一個(默認值)
db.test.update({},{$set:{interset:[]}},{multi:true})
// upsert選項 upsert是在找不到值的情況下,直接插入這條數據。比如我們這時候又來了一個成員xiaoba,
// 我們這時候修改他的信息,age設置成20歲,但集合中並沒有這條數據。這時候可以使用upsert選項直接添加。
db.test.update({name:'xiaoba'},{$set:{age:20}},{upsert:true})
// $push追加數組/內嵌文檔值
db.test.update({name:'xiaoba'},{$push:{interest:'draw'}})
// $ne查找是否存在 它主要的作用是,檢查一個值是否存在,如果不存在再執行操作,存在就不執行,這個很容易弄反。
db.test.update({name:'xiaoba',"interest":{$ne:'playGame'}},{$push:{interest:'Game'}})
// $addToSet 升級版的$ne
// 它是$ne的升級版本(查找是否存在,不存在就push上去),操作起來更直觀和方便,所以再工作中這個要比$en用的多。
db.test.update({name:"xiaoba"},{$addToSet:{interest:"readBook"}})
// $each 批量追加 它可以傳入一個數組,一次增加多個值進去,相當於批量操作,性能同樣比循環操作要好很多,
// 這個是需要我們注意的,工作中也要先組合成數組,然後用批量的形式進行操作。
var newInterset=["Sing","Dance","Code"];
db.test.update({name:"xiaoba"},{$addToSet:{interest:{$each:newInterset}}})