日期:2014-05-16  浏览次数:20508 次

MongoDB 实战笔记 三


?


导出
mongoexport -d my_mongodb -c user -o user.dat
导出CSV格式
mongoexport -d my_mongodb -c user? --csv -f uid,username,age -o?
user_csv.dat

???? -csv? 指要要导出为 csv 格式
???? -f??? 指明需要导出哪些例

导入
mongoimport -d my_mongodb -c user user.dat
导入CSV格式
mongoimport -d my_mongodb -c user? --type csv --headerline --file?
user_csv.dat

?

CSV 格式良好,主流数据库都支持导出为 CSV 的格式,所以这种格式非常利于异构数据迁移

mongodump 来做 MongoDB 的库或表级别的备份,下面举例说明:?
备份 my_mongodb 数据库
[root@localhost bin]# ./mongodump -d my_mongodb
自动出现备份目录 dump

?

mongodump -d my_mongodb -o my_mongodb_dump
也可以指定备份目录


恢复数据库
mongorestore -d my_mongodb my_mongodb_dump/*

?


删除数据库?
use test
db.dropDatabase()

?

服务端限制只有 192.168.1.103 这个 IP 可以访问 MongoDB 服务
[root@localhost bin]# ./mongod --bind_ip 192.168.1.103


客户端访问时需要明确指定服务端的 IP,否则会报错:?
[root@localhost bin]# ./mongo 192.168.1.102?
MongoDB shell version: 1.8.1?
connecting to: 192.168.1.103/test

?

将服务端监听端口修改为 28018?
[root@localhost bin]# ./mongod --bind_ip 192.168.1.103 --port 28018


端户访问时不指定端口,会连接到默认端口 27017,对于本例会报错
[root@localhost bin]# ./mongo 192.168.1.102

所以当服务端指定了端口后,客户端必须要明确指定端口才可以正常访问
[root@localhost bin]#?./mongo 192.168.1.102:28018

?

?


先启用系统的登录验证模块,? 只需在启动时指定 auth? 参数即可,如:??
[root@localhost bin]# ./mongod --auth

在 admin 库中新添一个用户 root:?
[root@localhost bin]# ./mongo?
MongoDB shell version: 1.8.1?
connecting to: test?
>?db.addUser("root","111")
{?
??????? "user" : "root",?
??????? "readOnly" : false,?
??????? "pwd" : "e54950178e2fa777b1d174e9b106b6ab"?
}?
>?db.auth("root","111")

本地客户端连接,指定用户,结果如下:?
[root@localhost bin]# ./mongo -u root -p

?

?

将将将 MongoDB Windows?
先创建 C:\mongo\logs\mongodb.log 文件,用于存储 MongoDB 的日志文件,? 再安装系统
服务。
C:\mongo\bin>C:\mongo\bin\mongod --dbpath=c:\ db --logpath=c:\mongo\lo?
gs\mongodb.log --install

?


t1_count.js 就是我们要执行的文件,里面的内容如下
[root@localhost bin]# cat t1_count.js??
var totalcount = db.t1.count();??
printjson('Total count of t1 is :? ' + totalcount);??
printjson('-----------------------');


./mongo t1_count.js?
MongoDB shell version: 1.8.1?
connecting to: test?
"Total count of t1 is :? 7"

?

/mongo --quiet? t1_count.js??
"Total count of t1 is :? 7"?
"-----------------------"?
[root@localhost bin]#?
通过指定 quiet 参数,即可以将一些登录信息屏蔽掉,这样可以让结果更清晰

?


查看活动进程,便于了解系统正在做什么,以便做下一步判断
>?db.currentOp();
> //? 等同于: db.$cmd.sys.inprog.findOne()?
{ inprog: [ { "opid" : 18 , "op" : "query" , "ns" : "mydb.votes" ,?
????????????? "query" : "{ score : 1.0 }" , "inLock" : 1 }?
????????? ]?
}?
:?
Opid:? 操作进程号
Op:? 操作类型(查询,更新等)?
Ns:? 命名空间,? 指操作的是哪个对象
Query:? 如果操作类型是查询的话,这里将显示具体的查询内容
lockType:? 锁的类型,指明是读锁还是写锁


DBA 都会毫不留情的杀掉这个罪魁祸首的
进程,下面将是这操作
>?db.killOp(1234/*opid*/)
> //? 等同于: db.$cmd.sys.killop.findOne({op:1234})

?


在字段 age 上