跳转至

6. 补充知识

固定集合

mongodb中可以创建大小固定的集合

特点
    能够淘汰早期数据
    插入和顺序查找的速度更快
    可以控制集合的空间大小

使用
    临时缓冲
    日志处理

创建固定集合
    db.createCollection(collection, {capped:true,size:10000,max:1000})
    参数
        capped: 表示创建固定集合
        size: 表示指定集合的大小, 字节
        max: 指定集合存放文档上限
    示例
        创建固定集合,size为1000,最多存3条文档
        db.createCollection('log', {capped:true,size:1000,max:3})

文件存储

  1. 存储文件路径

     db.log.insert(filename:'test.mp4', size:247.8, path:'/home/tarena/mongo/text.mp4')
    
    优点: 节省数据库空间,操作简单快捷
    缺点: 当数据库或者文件或者发生变化时需要修改数据库内容

  2. 存储文件本身 将文件以二进制的形式存储到数据库中
    优点: 数据库在文件就在,不会受到迁移等影响
    缺点: 占用数据库空间大,存取效率低

存储大文件

GridFS 存储大文件  

大文件:   
    在mongodb中认为大于16兆的文件为大文件   

GridFS 方法   
    Grid 网格   
    在mongodb中以两个集合配合的方法存储文件      
        fs.files      存储文件相关信息(文件名,文件类型)   
        fs.chunks     分块存储文件实际内容  

存储文件   
    mongofiles -d dbname put file  

        dbname: 要将文件存入的数据库,如果不存在自动创建   
        file: 要保存的文件   
    例如  
       将test.mp4存入grids数据库   
       mongofiles -d grid put test.mp4   

提取文件  
    mongodb -d dbname get file   
    例如     
        mongofile -d grid get test.mp4   
    优点   
        操作方便,提供较好的存储命令,使用数据库存储文件方便移植   
    缺点  
        读写效率低   

游标cursor

通过获取操作数据库返回结果,得到返回结果对象
通过游标可以进一步获取操作结果数据

将返回结果赋给一个js变量,作为查找结果游标  
    var cursor = db.connection.find()   

查看是否有下一个结果   
    cursor.hasNext()   

获取下一个结果   
    cursor.next()