安装 1. 方法一(不推荐) 1 vi /etc/yum.repos.d/mongodb.repo
写入
1 2 3 4 5 [mongodb-org] name=MongoDB Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el$releasever/ gpgcheck=0 enabled=1
保存
1 2 sudo yum makecache sudo yum install mongodb-org
将mongoDB添加到systemd
1 vim /usr/lib/systemd/system/mongod.service
1 2 3 4 5 6 7 8 9 10 11 12 [Unit] Description=mongodb database [Service] User=mongod Group=mongod Environment="OPTIONS=--quiet -f /etc/mongod.conf" ExecStart=/usr/bin/mongod $OPTIONS run PIDFile=/var/run/mongodb/mongod.pid [Install] WantedBy=multi-user.target
建立链接
1 ln -s /usr/lib/systemd/system/mongod.service /etc/systemd/system/multi-user.target.wants/
重新加载systemctl
2. 方法二(推荐) ###1. 安装
1 2 3 4 5 6 # 下载 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 解压 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 将解压包拷贝到指定目录 mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
1 export PATH=/usr/local/mongodb/bin:$PATH
直接执行此命令,只会创建出临时的环境变量,即重新断开连接服务器后会失效;
环境变量持久化配置:需要将mongod路径添加到系统路径中, 在 /etc/profile
文件中,添加
1 export PATH=/usr/local/mongodb/bin:$PATH;
执行 source /etc/profile
使系统环境变量立即生效
2.启动配置
创建数据库存放和日志目录 /usr/local/mongodb/data/db
/usr/local/mongodb/log
配置mongod启动文件/usr/local/mongodb/etc
下创建配置文件mongod.conf:1 2 3 4 5 6 dbpath=/usr/local/mongodb/data # 数据库存放位置(之前创建的) logpath=/usr/local/mongodb/log/mongo.log # 数据库日志存放位置(之前创建的) port=27017 fork=true #后台运行 auth=false # 初次配置先关了权限验证登陆模式 journal=false
3.启动
1 2 3 4 cd /usr/local/mongodb/bin mongod -f /usr/local/mongodb/etc/mongo.conf #关闭 mongod -f /usr/local/mongodb/etc/mongo.conf -shutdown
4.设置用户 进入数据库管理命令界面:mongo
1 2 3 4 5 use admin db.createUser({user:'admin',pwd:'password',roles:[{role:'root','db':'admin'}]}) use dbname db.createUser({user:'dbname',pwd:'password',roles:[{role:'readWrite',db:'dbname'}]})
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色:__system
相应的功能
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
还把配置文件auth
改为true
6.远程连接 1 2 3 4 5 mongo IP:27017/admin -u useradmin -p password 或 mongo IP:27017 use dbname db.auth('username','password')即可
备份与恢复 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 * 备份 mongodump -h dbhost -d dbname -o dbdirectory mongodump -h ip:27017 -u admin -p password -d database -o path -h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017 -d: 需要备份的数据库实例,例如:test -o: 备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。 * 恢复 mongorestore -h ip:port -d dbname 路径 mongorestore -h <hostname><:port> -d dbname <path> --host <:port>, -h <:port>: MongoDB所在服务器地址,默认为: localhost:27017 --db , -d : 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2 --drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦! <path>: mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。 你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。 --dir: 指定备份的目录 你不能同时指定 <path> 和 --dir 选项。
5. 卸载 1 2 3 4 5 sudo yum erase $(rpm -qa | grep mongodb-org) # 卸载 sudo rm -r /var/log/mongodb # 删除日志文件 sudo rm -r /var/lib/mongo # 删除数据
6.操作 查重
1 2 3 4 5 6 7 8 db.getCollection('表').aggregate([ { $group:{_id:{'字段':'$字段'}, count:{$sum:1}} }, { $match:{count:{$gt:1}} } ])
按netid进行查重 去处
1 2 3 4 5 6 7 8 9 10 11 12 13 db.getCollection('表').aggregate([ { $group: { _id: {字段: '$字段'},count: {$sum: 1},dups: {$addToSet: '$_id'}} }, { $match: {count: {$gt: 1}} } ]).forEach(function(doc){ doc.dups.shift(); db.表.remove({_id: {$in: doc.dups}}); }) 去处指定字段