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 命令.
来源: http://www.bubuko.com/infodetail-2692555.html