Capped集合簡介
1,Capped集合是一個固定大小,高性能的,文檔按照插入順序的一個集合。
新的對象會把覆蓋舊的對象,像環形緩存一樣。2,find時默認就是插入的順序,Capped集合會自動維護。
3,Capped 集合用來解決top 多少的問題,最新的top條評論,最活躍的top用戶…
Capped集合創建語法
db.createCollection("集合名稱", { capped : true, size : num, max : num } )
db.createCollection("log", { capped : true, size : 1000, max : 5 } )
1, size用來指定集合大小,單位KB。
2, 限制集合中對象的個數:可以在創建時設置max參數。
3, 指定mac數量的時候必須同時指定size容量。淘汰機制只有在容量還沒有滿時纔會依據文檔數量工作。
要是容量滿了,淘汰機制會依據容量來工作。
db.log.insert({"name":"u1"})
db.log.insert({"name":"u2"})
db.log.insert({"name":"u3"})
db.log.insert({"name":"u4"})
db.log.insert({"name":"u5"})
db.log.find()
{ "_id" : ObjectId("598d6cacde67b24068234115"), "name" : "u1" }
{ "_id" : ObjectId("598d6cb0de67b24068234116"), "name" : "u2" }
{ "_id" : ObjectId("598d6cb4de67b24068234117"), "name" : "u3" }
{ "_id" : ObjectId("598d6cb8de67b24068234118"), "name" : "u4" }
{ "_id" : ObjectId("598d6cbcde67b24068234119"), "name" : "u5" }
//再插入一個數據 將會覆蓋掉第一條數據
db.log.insert({"name":"u6"})
db.log.find()
{ "_id" : ObjectId("598d6cb0de67b24068234116"), "name" : "u2" }
{ "_id" : ObjectId("598d6cb4de67b24068234117"), "name" : "u3" }
{ "_id" : ObjectId("598d6cb8de67b24068234118"), "name" : "u4" }
{ "_id" : ObjectId("598d6cbcde67b24068234119"), "name" : "u5" }
{ "_id" : ObjectId("598d8faede67b2406823411a"), "name" : "u6" }
查看一個集合是不是Capped集合
db.collection.isCapped()
db.log.isCapped()
true //false 不是Capped集合
查看Capped集合狀態
db.log.stats()
{
"ns" : "leyue.log",
"count" : 4,
"size" : 140,
"avgObjSize" : 35,
"storageSize" : 36864,
"capped" : true,
"max" : 5,
"maxSize" : 1024,
"sleepCount" : 0,
"sleepMS" : 0,
....
}
1,max: Capped集合最多可以有多少條數據
2,maxSize:Capped集合最多可以有多少字節
把一個集合轉換成Capped集合,反之不行
db.runCommand({"convertToCapped": "要轉換的集合", size: 100000});
db.runCommand({"convertToCapped": "mycoll", size: 100000});
注意事項
1,32位機器上,一個Capped集合的最大值約爲482.5M,64位只受系統文件大小的限制,
創建的時候,可以預指定大小。2,可以向Capped 集合中加入數據,但不能刪除數據,也不能改變集合大小。
3,可以使用drop 方法刪除集合,刪除後,需顯示的重新創建這個集合。
db.log.drop()
true
db.createCollection("log", { capped : true, size : 1000, max : 5 } )
{ "ok" : 1 }
固定集合屬性及用法
屬性
屬性1:對固定集合進行插入速度極快
屬性2:按照插入順序的查詢輸出速度極快
屬性3:能夠在插入最新數據時,淘汰最早的數據
用法
用法1:儲存日誌信息
用法2:緩存一些少量的文檔