mongodb 固定集合和GridFS


固定集合:大小固定,如果空间不足最早的文档就会被删除,为新的文档腾出空间。可以插入、更新,不允许删除,但是可以调用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的原因是以下几种

  • 储存巨大的文件,比如视频,高清图片等
  • 利用GrndFS可以简化需求
  • GridFS会直接利用已经建立的复制或分片机制,故障恢复和扩展都很容易
  • GridFS可以避免用户上传内容的文件系统出现问题
  • 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中存储的是一些实际的内容数据信息

你可能感兴趣的:(mongodb)