MongoDB:NoSQL資料庫 MongoDB中的重要指示點 MongoDB中的三要素 資料庫 集合 文檔 MongoDB中的數據存儲是以Bson的形式存儲的,Bson是二進位的json,所以看上去記錄的形式類似於json數據 MongoDB中集合中的數據不同於關係型資料庫中的數據,MongoDB ...
MongoDB:NoSQL資料庫
- MongoDB中的重要指示點
- MongoDB中的三要素
- 資料庫
- 集合
- 文檔
- MongoDB中的數據存儲是以Bson的形式存儲的,Bson是二進位的json,所以看上去記錄的形式類似於json數據
- MongoDB中集合中的數據不同於關係型資料庫中的數據,MongoDB中文檔結構可以不同,因此擴展性非常好
- MongoDB中的三要素
MongoDB的優點:易擴展、高性能、靈活的數據模型
MongoDB的缺點:數據重覆存儲,占用空間大
MongoDB啟動
-
命令行(終端)啟動命令
- mongod : 運行服務端
- mongo: 啟動客戶端
-
查看幫助命令,預設埠,日誌位置
- 查看幫助:mongod –help
- 查看是否啟動成功:ps ajx|grep mongod
- 預設端⼝:27017
- 日誌的位置:/var/log/mongodb/mongod.log
- mongodb客戶端
- 啟動本地客戶端:mongo
- 查看幫助:mongo –help
- 退出:exit或者ctrl+c
MongoDB的基礎命令
操作資料庫命令
- 查看當前的資料庫:db
- 查看所有的資料庫:show dbs /show databases
- 切換資料庫:use db_name刪除當前的資料庫:db.dropDatabase()
- 切換到沒有的資料庫, 添加數據會自動創建
- 顯示當前資料庫狀態:db.stats()
- 當前資料庫版本:db.version()
- 查看當前資料庫的鏈接機器地址:db.getMongo()
操作集合的命令
- 不手動創建集合:
向不存在的集合中第⼀次加⼊數據時, 集合會被創建出來
-
手動創建結合:
創建用戶:db.createUser({user:"laowang",pwd:"123456",roles:[{role:"userAdmin",db:"stu"}]})- db.createCollection(name,options)
- db.createCollection("stu")
- db.createCollection("sub", { capped : true, size : 10 } )
- 參數capped: 預設值為false表示不設置上限,值為true表示設置上限
- 參數size: 當capped值為true時, 需要指定此參數, 表示上限⼤⼩,單位為位元組
- 當⽂檔達到上限時, 會將之前的數據覆蓋, 最早添加的數據移出, 其餘上移, 最後添加在最後一條
- 顯示當前所以用戶:show users
- 刪除用戶:db.removeUser("userName")
-
查看集合:
show collections
- 刪除集合:
db.集合名稱.drop()
mongo中的數據類型
- Object ID: ⽂檔ID
- String: 字元串, 最常⽤, 必須是有效的UTF-8
- Boolean: 存儲⼀個布爾值, true或false
- Integer: 整數可以是32位或64位, 這取決於伺服器
- Double: 存儲浮點值
- Arrays: 數組或列表, 多個值存儲到⼀個鍵
- Object: ⽤於嵌⼊式的⽂檔, 即⼀個值為⼀個⽂檔
- Null: 存儲Null值
- Timestamp: 時間戳, 表示從1970-1-1到現在的總秒數
- Date: 存儲當前⽇期或時間的UNIX時間格式
註意事項:
- 創建⽇期語句如下 :參數的格式為YYYY-MM-DD每個⽂檔都有⼀個屬性, 為_id, 保證每個⽂檔的唯⼀性
new Date('2017-12-20')
- 可以⾃⼰去設置_id插⼊⽂檔,如果沒有提供, 那麼MongoDB為每個⽂檔提供了⼀個獨特的_id, 類型:
objectID
- objectID是⼀個12位元組的⼗六進位數(瞭解):
- 前4個位元組為當前時間戳
- 接下來3個位元組的機器ID
- 接下來的2個位元組中MongoDB的服務進程id
- 最後3個位元組是簡單的增量值
插入數據
- db.集合名稱.insert(document)插⼊⽂檔時, 如果不指定_id參數, MongoDB會為⽂檔分配⼀個唯⼀的ObjectId類型的_id
- db.stu.insert({name:'gj',gender:1})
- db.stu.insert({_id:"20170101",name:'gj',gender:1})
- 插入單條指定為字典, 插入多條指定為列表
保存
- db.集合名稱.save(document)
- 如果⽂檔的_id已經存在則修改, 如果⽂檔的_id不存在則添加
- 區別於: insert如果存在直接報錯
簡單查詢:
db.集合名稱.find()
更新
- 語法:
db.集合名稱.update(<query> ,<update>,{multi: <boolean>})
- 參數query:查詢條件
- 參數update:更新操作符
- 參數multi:可選, 預設是false,表示只更新找到的第⼀條記錄, 值為true表示把滿⾜條件的⽂檔全部更新
- 舉例:註意:"multi update only works with $ operators" 更新全部,必須使用
$set
- db.stu.update({name:'hr'},{name:'mnc'}) 更新一條,沒有更新的欄位會丟棄.
- db.stu.update({name:'hr'},{$set:{name:'hys'}}) 更新一條
- db.stu.update({},{$set:{gender:0}},{multi:true}) 更新全部
刪除
- 語法:
db.集合名稱.remove(<query>,{justOne: <boolean>})
- 參數query:可選,刪除的⽂檔的條件
- 參數justOne:可選, 如果設為true或1, 則只刪除⼀條, 預設false, 表示刪除多條