固定集合:大小固定,如果空间不足最早的文档就会被删除,为新的文档腾出空间。可以插入、更新,不允许删除,但是可以调用drop()删除集合中的所有行,但删除后需要显式地重建集合。在默认情况下固定集合没有索引,即便是“_id”上也没有索引,文档本身是按照插入顺序存储的,对固定集合插入的速度极快。创建固定集合时,指明集合大小,还可以指明文档数量。
创建固定集合
不像普通集合,固定集合需要显式的创建使用createCollection命令来创建: db.createCollection(‘my_collection’, {capped:true, size:10000});
创建一个集合为”my_collection”的固定庥合,大小为10000字节,还可以限定文档个数,加上Max 100属性注意: 指定的文档上限,必须指定大小,文档限制是容量没满时进行淘汰,要是满了,就根据容量限制进行淘汰
db.c1.stats(); //查看集合的详细信息,capped是否为真表示为固定集合
普通的集合转换成固定集合需要使用convertTocapped命令
db.runCommand({convertToCapped:”test”,size:10000}); //把test普通集合转换为固定集合,大小为10000字节
固定集合文档按照插入储存的,默认情况下查询就是按照插入顺序返回的,也可以使用$natural调整返回顺序
db.my_collection.find().sort({$natural:1});//1表示默认顺序, -1则相反
GridFS
GridFS是一种在MongoDB中存储大二进制文件的机制,使用GridFS的原因是以下几种
GridFS使用两个表来存储数据:
files 包含元数据对象,chunks 包含其他一些相关信息的二进制块
为了使多个GridFS命名为一个单一的数据库,文件和块都有一个前缀,默认情况下,前缀是fs.所以任何默认的GridFS存储将包括命名空间fs.files和fs.chunks,各种第三方语言可更改其前缀
mongofiles是从命令行操作GridFS的一种工具,put(存储) get(取得) list(列表) delete(删除)
将testfile这个文件存储到库里面
./mongofiles put a.zip;
查看库里有哪里些GridFS文件
./mongofiles list;
查看fs.file中的内容
字段说明:
Filename: 存储的文件名
chunkSize: chunks分块的大小
uploadDate: 入库时间
md5: 此文件的md5
length: 文件大小,单位字节
fs.files中存储的是一些基础的元数据信息
fs.chunks的内容为
_id: 块自身的id
file_id: 包含这个块的元数据文档文件id
n:它代表的是chunks的序号,此序号是从0开始
date: 组成文件块的二进制文件
fs.chunks中存储的是一些实际的内容数据信息