標籤:string new 手動 opd 更新 var 布爾值 日誌 base
MongoDB:NoSQL資料庫
- MongoDB中的重要指示點
- MongoDB中的三要素
- MongoDB中的資料存放區是以Bson的形式儲存的,Bson是二進位的json,所以看上去記錄的形式類似於json資料
- 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, 保證每個?檔的唯?性
- 可以??去設定_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.集合名稱.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, 表示刪除多條
MongoDB基礎命令及操作