最近的畢設須要用到mongoDB數據庫,又把它拿出來再學一學,下盤並非很穩,因此作一些筆記,否則又忘啦.前端
mongoDB: https://www.mongodb.com/download-center?jmp=nav#enterprisevue
mongoVUE: mongoVUE 是一個mongoDB 數據庫的可視化界面 ,官網被牆了. 並且企業版15天后功能受限,因此在網上找了個破解版的.node
好了,點擊下載 ...mongodb
mongoDB 我下載的是archive版的, 解壓即用.
shell
將bin 目錄配置到環境變量中 ,下面是mongoDB 一些經常使用的功能
數據庫
mongod
開機
mongo
運行數據庫
mongoimport
導入數據庫
mongoexport
輸出數據庫
mongorestore
備份數據庫
...json
好了,如今開機服務器
mongod --dbpath d:/mongodb/data
--dbpath
表示數據庫文檔所在的文件夾,也就是說 mongoDB 真的有物理文件對應的數據庫.
前端工程師
能夠看到,已經啓動成功了ui
若是要使用這個數據庫, 那就從新打開一個終端,而且保持 mongod
進程執行
show dbs // 查看全部數據庫 use local // 使用數據庫 use test // 當use 一個不存在的數據庫, 那麼就會新建一個數據庫,可是 只有在插入數據後,數據庫纔會被真正建立成功 db // 查詢當前在哪一個數據庫
show collections // 顯示全部集合 db.student.insert({"name":"pawn","age":12,"gender":"male"}); // 如今插入一條數據 db.student.find() // 查詢集合
咱們多插入幾條數據,用來條件查詢,因爲在mongoDb中數據是沒有格式的, 因此下面的第二條語句徹底可行
db.student.insert({"name":"ququ","age":18,"gender":"male"}); db.student.insert({"name":"tom","age":9});
下面作一個查詢,也是採用一個對象查詢, 這對於JSer 簡直太友好了
db.student.find({name:'ququ'}); db.student.find({age:{$gt:12}})
刪除當前數據庫
db.dropDateabase()
可是,一般,咱們不可能一直insert 數據, 因此通常使用 mongoimport
來導入數據庫
//student.json { "id": "0001", "name": "pawn", "age": 18, "gender": "男", "specialty": "軟件工程", "job": "前端工程師", "contact": ["5555", "aagnoag@126.com"] } { "id": "0002", "name": "jk", "age": 22, "gender": "男", "specialty": "軟件工程", "job": "全棧工程師", "contact": ["5555", "aagnoag@126.com"] } { "id": "0002", "name": "alice", "age": 20, "gender": "女", "job": "鼓勵師", "contact": ["5555", "aagnoag@126.com"] }
經過下面的命令導入到數據庫test 的student 集合中,注意,執行這條命令必需要先退出mongo
mongoimport --db test --collection student --drop --file src/student.json
在mongoDB中, 一切都是基於對象的, 查詢也是,其刪除和更改操做也必需要先查詢才能夠,因此先深刻了解鏈接查詢.
這裏舉幾個例子,條件查詢, 並 , 或 ,排序
繼續使用上面的數據庫,查詢年齡大於20歲的男同窗.
db.student.find({"gender":"男","age":{$gt:20}})
兩個條件中的逗號就表示並,查找年齡大於 21 歲或者小於 19歲的同窗
db.student.find({$or:[{age:{$gt:21}},{age:{$lt:19}}]});
查找全部的學生, 並按照姓名排序,若是姓名同樣,則按照年齡排序,1
升序,-1
降序
db.student.find().sort({"name":1,"age":1});
修改裏面也要條件查詢, 必需要告訴mongo, 你要修改誰如今,將pawn 的年齡修改成 20歲
db.student.update({"name":'pawn'},{$set:{"age":20}})
可是,若是查詢到多條數據,那麼只會修改第一條,因此須要加一個參數
{multi:true}
將全部年齡爲20歲的名字改成 dandy
db.student.update({"age":20},{$set:{"name":"dandy"}},{multi:true})
若是不加 $set
呢? 它會覆蓋掉原來全部數據
db.student.update({"name":'jk'},{"job":"student"});
刪除數據就簡單了,刪除job 爲student的學生
db.student.remove({"job":"student"});
可是,若是查詢到多條數據,那麼刪除的時候就會所有刪除,若是隻刪一條, 須要加入參數justOne:true
刪除名爲dandy 的一我的
db.student.remove({"name":"dandy"},{justOne:true})
刪除全部記錄
db.student.remove({})
好了, 關於一些API就簡單學了學,也懶得背,不會再去查吧
官方文檔很是詳細 https://docs.mongodb.com/getting-started/shell/introduction/,不過都是英文的.
mongoDB 的文檔很是詳細,全部的用法均可以在文檔中查到.
下面咱們看看mongoVUE ,這個破 解起來也很是簡單,有須要也能夠發我郵件.
建立一個鏈接
An easy way to learn shell commands. As you use MongoVUE, corresponding shell commands are displayed here for a quick reference.
當使用界面操做mongoDB,下面會給出相應的命令 ,誒這就很舒服了, 很靈動 .
注意, 想要使用 mongoVUE ,也必需要使用mongod 開機
好了,這個時候咱們使用命令行插入的數據卻在mongoVUE 中怎麼也找不到,通過查詢發現
3.x默認是wiredTiger 引擎,2.x默認是mmapv1 引擎
打開MongoDB服務器,打開管理軟件鏈接到服務器,此時若是數據庫是默認條件下打開的,那麼MongoVUE的collection列表是無法檢測到,也無法新建的。這是由於MongoDB 3.2以後默認啓動的是wiredTiger引擎,這個引擎和以前的引擎不一樣,而管理軟件匹配的仍是以前的引擎,因此沒法使用。
此時要從新啓動MongoDB服務器。啓動命令是: mongod –-storageEngine mmapv1 –-dbpath XXXXX, 其中XXXXX是你的數據庫存儲路徑。這樣啓動以後,再使用MongoVUE鏈接數據庫服務器就能夠了。
因而使用
mongod –-storageEngine mmapv1 –-dbpath D:/mongoDB/data
這樣就行了
不過仍是建議使用命令行操做, 用mongoVUE 看看就能夠了,由於 nodejs 的語法和shell 很是類似.
下面開始講解 nodeJS若是操做mongoDB