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命令。
  • 相关阅读:
    TCP/IP 13学习笔记
    代码注入的三种方法
    一个简单的GTK的例子程序
    打印同样一个数据,竟然出现不同的结果,解决方法。
    解决multiple definition of的方法
    anjuta的安装、配置以及第一个hello程序
    rhythmbox中文乱码的解决方法
    Windows 和 Linux开发工具对比
    debian(包括ubuntu)命令行下的中文支持
    如何解决warning: no newline at end of file?
  • 原文地址:https://www.cnblogs.com/aiaitie/p/9339828.html
Copyright © 2011-2022 走看看