2021年12月10日 星期五

Mongodb

 官網連結


enterprise 需要錢,community 不用錢

下載解壓安裝,安裝過程會問要不要再安裝 compass,這個是 gui 工具,看要不要安裝或者安裝自己熟悉的 gui 工具,mongodb://127.0.0.1:27017 可以連自己的,但下面的 mongod 要執行成功

完成後,看要不要設定環境變數

啟動用 mongod,但會出現錯誤,說路徑要有 c:\data\db,自行創建後,啟動成功

或者用參數  mongod --dbpath 資料夾路徑名,這樣就可以使用自己喜歡的資料夾

port 預設是 27017,想改可用 mongod --port 2222,這要就可以改 port

然後再開一個視窗,打上 mongo 或 mongo --port 27017 即可連線,出現「>」表示連現成功


database 資料庫

collection 集合

document 文件

資料庫和集合不用手動創建,直接 use 名稱即可,在新增文件時,會自動新增資料庫和文件

show dbs 或 shw databases 看有什麼資料庫

db 看目前在哪個資料庫

show collections 或 show tables看當前資料庫有什麼集合


官方開發文件

新增文件 db.<collection>.insertOne   insertMany

 db.zoo.insertOne(name:"monkey");  zoo 是這行才開始新增的 collection,如果資料庫沒新增也會一併新增,insertOne 裡的 bson 就是 document

其他 deleteOne、deleteMany、updateOne、updateMany、find 都看官方文件即可


※NoSQLBooster for MongoDB

這也是個 IDE


projection 是投影的意思,在這裡表示哪些欄位要顯示,1顯示,0不顯示

另一種方法是將 document 寫在 find 的第二個參數裡,這樣就不用寫 projection 了



※索引

預設 _id 是 PK,就已經是索引了

db.<collection>.createIndex(

  { field1: 1 } ,

  { field2: -1 }

);

對 field1 做正序,對 field2 做倒序

查看 index: db.<collection>.getIndexes();


如圖,表示有兩個索引,key 為索引的欄位名稱,第二個是我建的複合索引


查看執行計畫,官方文檔

db.<collection>.explain("queryPlanner");

裡面可以寫三種值 queryPlanner、executionStats、allPlansExecution

看結果的 winningPlan,有個 stage,如下


stage 包括五種

COLLSCAN:掃描 collection,全表掃描的意思

IXSCAN:掃描 index,表示吃到索引了

FETCH:用於檢索文件

SHARD_MERGE:用於合併分片的結果

SHARDING_FILTER:用於從分片中過濾掉孤立文件


沒有留言:

張貼留言