MongoDB(文件導向的資料庫):
1. 資料以document形式儲存,每筆都是JSON
2. 沒有table的概念,無表格
3. 為collection的概念,半結構化的資料
4. 查詢語言皆以JSON為主
5. 沒有JOIN
解決方法: a. 只能到各地去抓資料回來在自己去寫程式RUN
b. 必要的資料就放在一起不要分開
JSON: 類似KEY VALUE,有順序的概念,不能有重複的KEY
存放資料,沒有固定格式的限制,也沒有形態的限制 (ex : int string)
RDB存放方式:
RDB table
name age
jj 30
bb 15
kk 22 05/05 XXX
-----------------------------------------------------------------
MongoDB存放方式:
MongoDBcollection
name "jj" , age "30"
name "bb" , age "15"
name "kk" , age "22" , birthday 05/05
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MongoDB 是 NoSQL中最盛行的
OPS 營運主管
PG → 監控方面:便於加節點,管理成本低,好維護性,有平衡的機制
(在同一環境不會有某節點做比較多而某節點run比較少資源的情況)
<此課程偏向> programmer
盛行的原因:比RDB簡單
● 類似FORING KEY的方式儲存
cms.blog.posts
表示名稱,中間的點點也可換成底線
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
※ 安裝 & 啟動方法
mongod ( d = 會在背景跑視窗的服務,不要關,關了就無法use)
1. 下載MongoDB套件 https://www.mongodb.org/
2. 在cmd下建立資料夾 mkdir MongoDB\ <在要儲存的地方建立資料夾>
3. cd 安裝目錄之下,mongo.exe 設定path: mongod --dbpath 建立資料夾的地方
4. 再另外開一個cmd
5. md MongoDB\ (移動到存放資料的資料夾) 之下
6. 確認是否有mongo.exe : tasklist | find "mongo" 會顯示出來
7. 移到安裝目錄之下 key mongo 即可執行
-----------------------------------------------------------------
Mongo DB 在 javascrip 即時環境
下指令:
var a={name="Danny",age:"25"} key不用加引號,value要記得打引號(單雙皆可)
db的POST和 javascript的POST不一樣, javascript的POST所做的變更並不會同步到db的POST
當 javascript的POST 有異動時, db的POST 需要update
post 為預設變數名稱,可修改
-----------------------------------------------------------------
db. collection name. 動作名稱
.remove({})
.update(, 資料名稱)
.insert({a:3,b:5}) 直接新增
.findOne() 排序整齊
.find().pretty() 排序整齊
放在裡面的資料抓出來就會有_id 形同身分證的存在
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
指令: ※ 新增、※ 修改、※ 刪除
> show dbs 列出資料庫清單
> show collections 列出資料集清單
> example ={name:'David',number:'01', date: new Data()} 新增 資料
> db.blog.items.insert(example)
> db.blog.items.find() 列出資料集的資訊
> db.blog.items.findOne() 排序整齊 列出資料集的資訊
> example.tag=['birthday','0504'] tag 標籤
> db.blog.items.update({ "_id" : ObjectId("5546ee08651865577708b426")},example) 更新db.blog.items
> db.blog.items.findOne() 排序整齊 列出更新完後的資料集的資訊
> db.blog.items.remove({"name" : "David"}) 移除含有"name" : "David" 欄位的資料集
> db.blog.items.findOne() 結果會是null
-----------------------------------------------------------------------------
指令: 排序
> example2 = {name:'Danny',age:'25',date: new Date()}
> db.people.insert(example2)
> db.people.find().pretty() <功能和.findOne() 一樣>
-----------------------------------------------------------------------------
config檔 設定檔 < 用來設定在啟用時會run什麼程式 >
在能輸入的視窗key
關掉: db.adminCommand({shutdown:1})
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
※ id & Object
_id 可自行產生 型態不限制且不能重複值
Timestamp 目前時間(指到秒)
Machine : MAC位址
-----------------------------------------------------------------------------
Bulk insert ???
> db.testdata.insert([{phone:0987654321},{money:100000}])
> db.testdata.findOne() 每個新增的資料都有id
Tips:
○ document 限制大小為 16M,不適合放二進位的資料(EX:圖檔)
○ 如何得知文件大小 → Object.bsonsize(doc文件名稱)
○ 如果連collection 都不要可以直接drop
drop 比 remove 速度還快還省時間
○ document 需要限制大小較佳
===============================================================================
※ 修改js檔,並在mongodb之下run結果
1. 將js檔 移到bin之下
2. 再用nopad++ 開.js檔
3. 移除註解 存檔在去run
4. cmd 在bin 之下 mongo.exe query1.js (檔名)
5. 就可以show出結果
其他參考資料:MongoDB講義
參考來源: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/
沒有留言:
張貼留言