天天看點

.NET 雲原生架構師訓練營(子產品二 基礎鞏固 MongoDB 介紹和基礎)--學習筆記2.5.1 MongoDB -- 介紹2.5.2 MongoDB -- 基礎

2.5.1 MongoDB -- 介紹

  • mysql vs mongo
  • 快速開始

對比 mysql mongo
資料存儲 table 二維表結構,需要預先定義結構 json 類文檔,不需要預先定義結構。可随意新增或删除字段,新增字段不會對已存在的字段産生影響
查詢文法 sql (structured query language)
索引 如果不定義索引,則進行全表掃描
叢集 支援主從複制 内置副本集、分片、和自動選舉
場景 關系型結構,在多行插入時需要事務保障 實時資料分析、内容管理、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

database
collection table
document row
filed column

資料庫

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

集合

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

字段名

  • 頂級字段不能以$開頭
  • _id是保留字段名稱

BosnTypes

https://mongoing.com/docs/reference/bson-types.html
string
bool Boolean
int
long
decimal
double
date
timestamp
null
  • object
  • array
  • objectid
  • regex
  • javascripe