.NET 雲原生架構師訓練營(模組二 基礎鞏固 MongoDB 介紹和基礎)--學習筆記

MingsonZheng發表於2021-01-02

2.5.1 MongoDB -- 介紹

  • mysql vs mongo
  • 快速開始

mysql vs mongo

對比 mysql mongo
資料儲存 table 二維表結構,需要預先定義結構 json 類文件,不需要預先定義結構。可隨意新增或刪除欄位,新增欄位不會對已存在的欄位產生影響
查詢語法 sql (structured query language) mongo
索引 如果不定義索引,則進行全表掃描 如果不定義索引,則進行全表掃描
叢集 支援主從複製 內建副本集、分片、和自動選舉
場景 關係型結構,在多行插入時需要事務保障 實時資料分析、內容管理、iot裝置、移動裝置(事務需要有內建副本才可以做)
資料結構 結構化、資料 schema 定義清晰 未知資料結構型別
風險 sql 注入攻擊 相對來說風險更低
分析 確實需要關係型資料庫來保障 寫入併發高,沒有 DBA

快速開始

安裝 mongo in docker

docker run -it --volume=/root/docker/mongo01/data:/data/db -p 27017:27017 --name mongo01 -d mongo

robt 3t 下載地址:
https://download.studio3t.com/robomongo/windows/robo3t-1.4.2-windows-x86_64-8650949.exe

新增資料庫books,新增集合author

增刪改查

// 插入
db.author.insertOne({"name":"mingson", "age":25}) 
db.author.insertOne({"name":"jesse", "age":18}) 
db.author.insertOne({"name":"bobo", "age":18})

// 查詢 
db.getCollection('author').find({"name":"mingson"})
db.getCollection('author').find({"name":{$eq:"mingson"}})

// 更新
db.author.updateOne({"name":"mingson"},{$set:{"age":20}})

// 刪除
db.author.deleteOne({"name":"bobo"})

// 返回欄位,1返回,0不返回
db.getCollection('author').find({"name":"mingson"},{"name":1,"_id":0})

2.5.2 MongoDB -- 基礎

mongo db 文件:
https://docs.mongodb.com/manual/introduction/

中文 mongo db 手冊:
https://mongoing.com/docs/tutorial/insert-documents.html

資料庫/集合/文件

database/collection/document

mongo mysql
database database
collection table
document row
filed column

資料庫

  • 資料庫的名稱是大小寫敏感
不能包含以下字元(win):/\."$*<>:|?
不能包含以下字元(unix/linux):/\."$
  • 不能超過64個字元

集合

  • 不能包含$
  • 不能為空,不能包含null
  • 不能以system.開頭

欄位名

  • 不能為空,不能包含null
  • 頂級欄位不能以$開頭
  • _id是保留欄位名稱

BosnTypes

https://mongoing.com/docs/reference/bson-types.html

string string
bool Boolean
int int
long long
decimal decimal
double double
date date
timestamp timestamp
null null
  • object
  • array
  • objectid
  • regex
  • javascripe

知識共享許可協議

本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。

歡迎轉載、使用、重新發布,但務必保留文章署名 鄭子銘 (包含連結: http://www.cnblogs.com/MingsonZheng/ ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。

如有任何疑問,請與我聯絡 (MingsonZheng@outlook.com) 。

相關文章