1.collection介紹mongodb
在mongodb中,collection至關於關係型數據庫的表,但並不需提早建立,更不須要預先定義字段數據庫
db.collect1.save({username:'mayj',mail:'test@abc.com'}) #向collect1中插入一條記錄,collection會在第一次插入記錄的時候自動建立app
db.collect1.save({username:'name2',mail:'name2@abc.com',age:28}) #插入一條新記錄,相對上條記錄此次有三個key,相似三個字段spa
db.collect1.find(); #列出collect1中的全部記錄索引
2.對collection能夠進行任意維度的查詢隊列
以上面的collect1爲例,能夠執行get
> db.collect1.find({username:'mayj'}) #查詢username='mayj'的記錄,至關於執行select * from collect1 where username='mayj'io
結果:{ "_id" : ObjectId("4cb7efb7a3f37347a20e37ea"), "username" : "mayj", "mail" : "test@abc.com" }test
> db.collect1.find({age:28}) #查詢age=28的記錄,至關於select * from collect1 where age=28file
{ "_id" : ObjectId("4cb7efb7a3f37347a20e37eb"), "username" : "name2", "mail" : "name2@abc.com", "age" : 28 }
> db.collect1.find({age:28},{username:true}) #查詢age=28的username值, 至關於select username from collect1 where age=28
{ "_id" : ObjectId("4cb7efb7a3f37347a20e37eb"), "username" : "name2" }
其實還能夠對collection裏的任意key建立索引,以加快查詢速度
3.capped collection介紹
如前面介紹collection至關於一個表,capped collection就至關於能夠指定一個表能夠佔用空間的最大空間或指定一個表最大可容納的記錄數,我的認爲在某些應用場合下這個功能很好用
舉例說明:
db.createCollection("mycoll", {capped:true, size:100000})
#指定mycoll這個表最大可使用100000byte空間,當達到最大空間時再insert記錄時,會把最先insert的記錄自動刪除,比如一個FIFO隊列
db.createCollection("mycoll", {capped:true, size:100000, max:100});
#指定mycoll這個表最大記錄數爲100,當第101條記錄進來時,最先的記錄會被自動刪除
如:
> db.createCollection("c1_max_1", {capped:true, size:100000, max:1}); #指定最大記錄數爲1
{ "ok" : 1 }
> db.c1_max_1.save({a:1}) #插入一條記錄
> db.c1_max_1.find()
{ "_id" : ObjectId("4cb7f6efa3f37347a20e37ec"), "a" : 1 } #列出表因此記錄,共一條
> db.c1_max_1.save({a:2}) #再插入一條記錄
> db.c1_max_1.find()
{ "_id" : ObjectId("4cb7f6ffa3f37347a20e37ed"), "a" : 2 } #列出表因此記錄,仍爲一條,最先的記錄被刪除
collection限制
默認的狀況下,MongoDB的每一個數據庫有24000左右命名空間的限制。
每一個命名空間有628字節。.nsfile默認爲16MB。
每一個collection以及索引都算做namespace。所以若是每一個collection有一個索引,
咱們能建立12000個collection。
--nssize容許提高這個限制。
當心的是每一個collection都會佔用一些存儲-不多的KB。更近一步說,任何的索引都須要至少8KB的數據空間,也就意味着每一個b-tree page大小爲8KB.
若是有不少collection以及元數據常常要頁輸出,會致使核心的操做速度變慢。
--nssize
若是須要更多的collection,運行mongod --nssize參數。這個參數會讓.ns文件更大,
支持更多的collection。注意的是 --nssize 用於最新建立數據庫。若是你運行在一個存在的數據庫,
但願從新定義大小,那麼在運行--nssize以後,要運行db.repairDatabase()命令來調整大小。
.ns 文件最大爲 2GB.