學習MongoDB
一、安裝
在window的環境下安裝MongoDB:
MongoDB下載地址
點擊下載即可
1、點擊運行安裝到指定的目錄下面,比如我選擇的是D:\Mongo
2、在D:\Mongo 的data下創建兩個文件夾,分別是db和log,並在log文件夾下面創建MongoDB.log 用來記錄日誌信息。
3、打開cmd,執行命令cd D:\Mongo\bin
以及 D:\Mongo\bin>mongod -dbpath "Mongo\data\db"
出現下圖樣式:
表示啓動成功,默認的監聽端口是27017
4、測試連接: 另外打開一個cmd窗口,進入對應的MongoDB目錄中,也就是D:\Mongo\bin中
表示已經啓動,可以在裏面輸入一些操作語言了
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={"loginUnser":userName,"loginTime":timeStamp}; //組成JSON字符串
var db = connect('user'); //鏈接數據庫
db.login.insert(jsonDdatabase); //插入數據
print('connect success'); //沒有錯誤顯示成功
然後像執行node文件那樣,執行語句是 mongo js文件名
MongoDB用js實現增刪改查
// 批量插入
var db = connect('user'); //鏈接數據庫
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])
修改:
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}}})