?????Mongodb是非關(guān)系型數(shù)據(jù)庫中的一種分布式文件存儲的數(shù)據(jù)庫。Mongodb和Redis通常作為數(shù)據(jù)緩存配合MySQL使用。
nosql.png
?????如圖所示,用戶請求數(shù)據(jù)杨名,應(yīng)用將會先檢查內(nèi)存中的redis或者mongodb是否對請求的數(shù)據(jù)有緩存,如果有就直接返回猖毫,沒有的話再向MySQL請求台谍。
????? MySQL與Mongodb比較:
比較.png
?????Mongodb三要素:數(shù)據(jù)庫,集合吁断,文檔趁蕊。
常用
- db:查看當(dāng)前數(shù)據(jù)庫
- show dbs:查看所有數(shù)據(jù)庫
- use dbnanme:使用這個數(shù)據(jù)庫,如果沒有的話就會創(chuàng)建一個新的數(shù)據(jù)庫
- db.dropDatabase():刪除當(dāng)前數(shù)據(jù)庫
-
db.createCollection(name,options):創(chuàng)建一個集合
?????name:是要創(chuàng)建集合的名字
?????options:是一個文檔仔役,用于指定集合的配置掷伙,可選
db.createCollection('stu',{capped:true,size:10})
//如果只寫name,capped的默認(rèn)值是false又兵,不會限制集合的大小任柜,設(shè)為true卒废,size為10的時候表示表示上限大小,當(dāng)文檔達到上限時宙地,會將之前的數(shù)據(jù)覆蓋掉
- show collections:查看當(dāng)前數(shù)據(jù)庫中有幾個集合
- db.collectionname.drop():刪除名為××的集合
- db.collectionname.insert({鍵值對}):給集合插入數(shù)據(jù)
db.stu.insert({name:'John',gender:1})
- db.collectionname.find():簡單查詢
-
db.collectionname.update(
<query>,
<update>,
{multi:<boolean>}
):修改數(shù)據(jù),multi默認(rèn)為false摔认,表示只更新找到的第一條數(shù)據(jù),ture為所有滿足條件的都修改
db.stu.update(
{name:'hr'},
{name:'Mary'}
)//在stu集合中找到name為hr的數(shù)據(jù)宅粥,將其文檔替換為下面的文檔{name:'Mary'}
如果只想修改文檔的屬性需要$set
db.stu.update(
{name:'hr'},
{$set:{name:'Mary'}}
)//在stu集合中找到name為hr的數(shù)據(jù)参袱,將其name屬性改為Mary
- db.collectionname.save(文檔):保存,如果文檔的_id已經(jīng)存在粹胯,執(zhí)行修改操作蓖柔,如果文檔的_id不存在,執(zhí)行添加操作
db.stu.save({_id:'20181111',name:'Mike'})
-
db.collectionname.remove(
<query>,
{justOne:<boolean>}
):query刪除文檔的條件风纠,justOne默認(rèn)為false,刪除多條
db.stu.remove(
{name:'hr'},
{justOne:true}
)
db.stu.remove({})//全部刪除
簡單查詢
- find():查詢所有滿足條件的
db.collectionname.find({文檔條件})
- findOne():查詢牢贸,只返回第一個
- pretty():將結(jié)果格式化
db.collectionname.find({文檔條件}).pretty()
-
幾個比較運算符:
$lt:小于
$gt:大于
$lte:小于等于
$gte:大于等于
$ne:不等于
db.stu.find({age:{$gte:18}})//查詢年齡大于等于18的
-
邏輯運算符:
?????
數(shù)據(jù)類型
- Object ID:文檔ID
- String:字符串竹观,必須是有效的utf-8
- Boolean:布爾類型
- Integer:整數(shù)可以是32位或者64位取決于服務(wù)器
- Double:浮點數(shù)
- Array:數(shù)組或列表,多個值存儲到一個鍵
- Object: 用于嵌入式的文檔潜索,即一個值為一個文檔
- Null:空值
- Timestamp:時間戳
-
Date:存儲當(dāng)前日期或時間的unix時間格式
Object ID是一個12字節(jié)的十六進制數(shù)
前4個字節(jié)為當(dāng)前時間戳
接下來3個字節(jié)為機器ID
接下來2個字節(jié)為mongodb的服務(wù)進程id
最后3個字節(jié)是簡單的增量值