zoukankan      html  css  js  c++  java
  • MongoDB之基本操作与日常维护

    MongoDB基本操作

    MongoDB的基本操作主要是对数据库、集合、文档的操作,包括创建数据库、删除数据库、插入文档、更改文档、删除文档、和查询文档。

    操作描述
    show dbs 查看当前实例下的数据库列表
    show users 显示用户
    use <db_name> 切换当前数据库
    db.help() 显示数据库操作命令
    show.collections 显示当前数据库中的集合
    db.foo.help() 显示集合操作命令,foo是当前数据库下的集合
    db.foo.find() 对当前数据库中foo集合进行数据查找

    MongoDB数据类型

    • MongoDB支持许多数据类型的列表下面给出:
    • String : 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。
    • Integer : 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。
    • Boolean : 此类型用于存储一个布尔值 (true/ false) 。
    • Double : 这种类型是用来存储浮点值。
    • Min/ Max keys : 这种类型被用来对BSON元素的最低和最高值比较。
    • Arrays : 使用此类型的数组或列表或多个值存储到一个键。
    • Timestamp : 时间戳。这可以方便记录时的文件已被修改或添加。
    • Object : 此数据类型用于嵌入式的文件。
    • Null : 这种类型是用来存储一个Null值。
    • Symbol : 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。
    • Date : 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。
    • Object ID : 此数据类型用于存储文档的ID。
    • Binary data : 此数据类型用于存储二进制数据。
    • Code : 此数据类型用于存储到文档中的JavaScript代码。
    • Regular expression : 此数据类型用于存储正则表
    #创建数据库testdb数据库,使用以下语句
    mongos> use testdb;
    #查询数据库,要显示数据库必须插入至少一条文档
    mongos> show dbs;
    #插入数据文档
    mongos> db.tablename.insert({"name":"antian"});
    #数据库生成了
    mongos> show dbs;
    testdb  0.078GB
    
    #查询数据库
    mongos> show dbs;
    testdb  0.078GB
    #进入数据库
    mongos> use testdb;
    #删除数据库
    mongos> db.dropDatabase();
    { "dropped" : "testdb", "ok" : 1 }
    #查询数据库
    mongos> show dbs;
    #创建集合
    #进入数据库
    mongos> use testdb;
    #创建集合
    mongos> db.createCollection("mycollection")
    mongos> show tables;
    mycollection
    
    #删除集合
    #进入数据库
    mongos> use testdb;
    mongos> show tables;
    mycollection
    mongos> db.mycollection.drop();
    true
    mongos> show tables;
    #插入文档
    #插入一条文档
    mongos> db.tablesname.insert([{"name":"aaaaa","age":"18"}
    #插入两条文档
    mongos> db.tablesname.insert([{"name":"ddddd","age":"18"},{"name":"eeee","age":"10"}]);
    #查询一个文档:
    mongos> db.tablesname.findOne();

    MongoDB日常维护

    一.导入导出

    mongoimport命令可以把一个特定格式文件中的内容导入到指定的collection中。该工具可以导入JSON格式数据,也可以导入CSV格式的数据。 
    mongoexport命令可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。 
    参数说明:

    • -d:指明数据库的名字
    • -c:指明collection的名字
    • -f:指明要导出哪些列
    • -o:指明要导出的文件名
    • -q:指明导出数据的过滤条件
    for(var i=1;i<=100;i++)db.info.insert({"id":i,"name":"jack"+i})    //循环写入100条数据
    mongoexport -d school -c info -o /opt/info.json   //导出
    mongoimport -d school -c info1 --file /opt/info.json  //导入到info集合
    mongoexport -d school -c info1 -q '{"id":{"$eq":10}}' -o /opt/top10.json    //条件导出指定第10行

    二.备份与恢复

    备份:mongodump 
    恢复:mongorestore
     
    参数说明:

    • -h: MongoDB所在服务器地址
    • -d:需要备份的数据库实例
    • -o:备份的数据存放的位置,该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
    mkdir /backup   //创建存放目录
    mongodump -d abc -o /backup/       //备份abc数据库
    mongorestore -d abc123 --dir=/backup/abc    //恢复到abc123数据库

    三.复制数据库

    db.copyDatabase

    >db.copyDatabase("abc","abc1")  //复制数据库abc生成abc1

    四.克隆集合

    runCommand
    将abc中的info集合克隆到实例2

    mongo --port 27018      //进入实例2
    db.runCommand({"cloneCollection":"abc.info","from":"192.168.100.152:27017"})

    五.授权启动

    可以配置授权用户来访问MongoDB,启动时必须指定auth=true,否则授权不起作用。 
    可以将用户加入到角色,内置数据库用户角色包括:read、readWrite,数据库管理角色包括:dbAdmin、dbOwner、useAdmin,超级用户角色为root。

    vim /usr/bin/mongodb1.conf
    ......
    auth=true
    ......
    mongo
    >use admin
    >db.createUser({"zx":"root","pwd":"123","roles":"[root"]})      //创建用户zx,密码为123,分配到root角色
    >db.auth("root","123")      //验证用户

    六.进程管理

    • 查看当前正在运行的进程的命令为:db.currentOp()
    • 终止正在运行的高消耗资源的进程命令为:db.killOp(opid)

    七.MongoDB监控

    • 查看数据库实例的状态信息:db.serverStatus()
    • 查看当前数据库的统计信息:db.status()
    • 查看集合统计信息:db.users.stats()
    • 查看集合大小:db.users.dataSize()
    • 也可以通过Web界面查看系统监控信息,需要在配置文件中添加下面一行: 
      httpinterface=true

    然后在浏览器中通过http://localhost:28017 进行访问。通过Web页面可以看到:

      • 当前MongoDB的所有连接
      • 各个数据库和Collection的访问统计,包括:Reads、Writes、Queries、GetMores、Inserts、Updates、Removes。
      • 写锁的状态
      • 日志文件的最后几百行。
      • 所有的MongoDB命令。
  • 相关阅读:
    target runtime apache v6.0 not defined解决
    java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
    The valid characters are defined in RFC 7230 and RFC 3986问题
    invalid END header解决方法
    You have more than one version of ‘org.apache.commons.logging.Log’ visible, which is not allowed问题解决
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    在eclipse中import java web项目时遇到的一些问题并将该项目通过tomcat发布
    java byte转string 涉及到字节流中有中文
    spring+mybatis框架搭建时遇到Mapped Statements collection does not contain value for...的错误
    试试看读一下Zepto源码
  • 原文地址:https://www.cnblogs.com/aiaitie/p/9339828.html
Copyright © 2011-2022 走看看