MongoDB总结(二):mongoDB的索引、备份和恢复、固定集合及数据库安全

来源:互联网 发布:英超直播软件 编辑:程序博客网 时间:2024/04/27 17:31

1. MongoDB的索引

建立索引的目的是为了加速查询的。下面我们来查看一下在mongodb中常用的索引操作:

  • 创建普通索引,使用命令 db.collection(例如:c1).ensureIndex({key:1})
  • 创建唯一索引,使用命令 db.collection.ensureIndex({key:1},{unique:true})
  • 查看关于索引的相关信息,使用命令 db.collection.stats()
  • 查看查询使用索引的情况,使用命令 db.collection.find({key:value}).explain()
  • 删除索引,使用命令 db.collection.dropIndex({key:1})

2. mongoDB的数据备份和恢复

  • mongoDB中的数据备份和恢复方法一

    备份数据使用下面的命令:

    mongodump -h dbhost -d dbname -o dbdirectory
    -h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
    -d:需要备份的数据库实例,例如:test
    -o:备份的数据存放位置,例如:D:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

  出现错误: Wed Apr 20 21:58:00.481 JavaScript execution failed: SyntaxError: Unexpected identifier

原因 : 如图所示:主要是因为在数据备份的时候不能在数据库操作环境下进行
这里写图片描述

解决办法:将环境切换到普通cmd 环境下进行数据备份即可
这里写图片描述
 
  恢复数据使用下面的命令:

mongorestore -h dbhost -d dbname -directoryperdb dbdirectory
-h:MongoDB所在服务器地址
-d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
-directoryperdb:备份数据所在位置,例如:c:\data\dump\test

  • mongoDB中的数据备份和恢复方法二

     导出数据可以使用命令:

     mongoexport -h dbhost -d dbname -c collectionName -o output
     参数说明:
     -h 数据库地址
     -d 指明使用的库
     -c 指明要导出的集合
     -o 指明要导出的文件名

    导入数据可以使用命令:

    mongoimport -h dbhost -d dbname -c collectionname 文件的地址…
    参数说明:
    -h 数据库地址
    -d 指明使用的库
    -c 指明要导入的集合


3.固定集合(capped collection)

  固定集合指的是事先创建而且大小固定的集合 。
  固定集合特性:固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。
  
创建固定集合使用命令:

db.createCollection(“collectionName”,{capped:true,size:100000,max:100});
size指定集合大小,单位为KB,max指定文档的数量
当指定文档数量上限时,必须同时指定大小。淘汰机制只有在容量还没有满时才会依据文档数量来工作。要是容量满了,淘汰机制会依据容量来工作。
备注:将普通集合转换为固定集合: db.runCommand({convertToCapped:collectionName”,size:10000,max:100});


4.安全和认证

  每个MongoDB实例中的数据库都可以有许多用户。如果开启了安全性检查,则只有数据库认证用户才能执行读或者写操作。
在认证的上下文中,MongoDB会将普通的数据作为admin数据库处理。admin数据库中的用户被视为超级用户(即管理员)。

在admin数据库中创建管理员账号:

use admin;
db.addUser(“root”,”root”);

在test数据库中创建普通账号:

use test;
db.addUser(“shell”,”123”);
db.addUser(“hash”,”123”,true);

注意:用户shell,密码为123,对test数据库拥有读写权限
用户hash,密码为123,对test数据库拥有只读权限

重新启动数据库服务,并开启安全检查:

mongod –dbpath d:\mongo_data –auth

0 0