mongodb相关操作

更新时间 🔔🕙 2021年5月7日

环境:
mongodb3.2

1.mongodb连接

#连接本地mongodb
mongo
#连接本地mongodb,指定端口
mongo 127.0.0.1:27017
#连接本地mongodb,指定端口和账号
mongo 127.0.0.1:27017/admin -u sa -p

2.数据库切换

#显示所有数据库
show dbs;
#切换到数据库
use admin;
#显示所有的collection
show collections;

3.增加账号

#这是旧版本的增加账号方式
db.addUser('sa','sa');
#新版本使用以下方式,来增加账号
#可以参考https://docs.mongodb.org/manual/reference/method/db.createUser/#create-administrative-user-with-roles
db.createUser(
{
user: "sa",
pwd: "sa",
roles: [ "__system","backup","clusterAdmin","dbAdminAnyDatabase","readWriteAnyDatabase","userAdminAnyDatabase" ]
}
);
#验证账号是否增加成功:1为正常,0为失败
db.auth("sa","sa");

此处注意。
如果使用的是mongo3.2,需要兼容2.x版本的连接客户端时,需要将创建账号的密码加密等级调整一下。
因为2.x版本的密码加密方式是【MONGODB-CR】,3.x版本的加密方式是【SCRAM-SHA-1】。
使用2.x版本的jdbc连接3.x版本也会有同样的问题。
会出现【authenticate failed】的问题。
修改方法:

#给管理员赋予【__system】的角色
#切换到admin数据库
use admin
#执行下面的代码
var schema = db.system.version.findOne({"_id" : "authSchema"})
schema.currentVersion = 3
#将会输出3
#保存该记录
db.system.version.save(schema)
#成功将输出WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

#接下来重启数据库,就可以开始创建用户了。
#创建之后,查看一下密码的加密方式
use admin
db.system.users.find({"user":"sa"})
#结果类似如下即可
#{ "_id" : "userdb.myuser", "user" : "sa", "db" : "userdb", "credentials" : { "MONGODB-CR" : ... }
#原来的为
#{ "_id" : "userdb.myuser", "user" : "sa", "db" : "userdb", "credentials" : { "SCRAM-SHA-1" : ... }
#删除用户
use admin
db.system.users.remove({user:"sa"});
#修改用户密码(为已经存在的用户更改密码)
db.addUser("sa","sa");
#用户授权
db.auth("sa","sa");

4.数据库,以及collection相关操作

#删除数据库abc
use abc;
db.dropDatabase();
#给collection【stu】增加一条记录
db.stu.save( {username:"s01"} );
#查询collection【stu】的记录
db.stu.find();

5.export导出mongodb

#导出整个mongo
#mongodump -h IP --port 端口 -u 用户名 -p 密码 -o 文件存在路径(文件夹) > 导出过程.txt 2>&1
mongodump -h 127.0.0.1 --port 27017 -u sa -p sa -o /home/mongodump > ./dump.txt 2>&1
#如果报错,auth failed,加上 --authenticationDatabase admin即可
mongodump -h 127.0.0.1 --port 27017 -u sa -p sa --authenticationDatabase admin -o /home/mongodump > ./dump.txt 2>&1

#导出某个数据库
#mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径(文件夹) > 导出过程.txt 2>&1
mongodump -h 127.0.0.1 --port 27017 -u sa -p sa -d local -o /home/mongodump > ./dump.txt 2>&1
#如果报错,auth failed,加上 --authenticationDatabase admin即可
mongodump -h 127.0.0.1 --port 27017 -u sa -p sa -d local --authenticationDatabase admin -o /home/mongodump > ./dump.txt 2>&1

#导出某个数据库中的某个collection
#mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c collection名 -o 文件存在路径(文件夹) > 导出过程.txt 2>&1
mongodump -h 127.0.0.1 --port 27017 -u sa -p sa -d local -c test -o /home/mongodump > ./dump.txt 2>&1
#如果报错,auth failed,加上 --authenticationDatabase admin即可
mongodump -h 127.0.0.1 --port 27017 -u sa -p sa -d local -c test --authenticationDatabase admin -o /home/mongodump > ./dump.txt 2>&1

6.import导入mongodb

#导入整个mongo
#mongorestore -h IP --port 端口 -u 用户名 -p 密码 文件存在路径(文件夹) > 导入过程.txt 2>&1
mongorestore -h 127.0.0.1 --port 27017 -u sa -p sa /home/restore > ./restore.txt 2>&1
#如果报错,auth failed,加上 --authenticationDatabase admin即可
mongorestore -h 127.0.0.1 --port 27017 -u sa -p sa --authenticationDatabase admin /home/restore > ./restore.txt 2>&1

#导入某个数据库
#mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径(文件夹) > 导入过程.txt 2>&1
mongorestore -h 127.0.0.1 --port 27017 -u sa -p sa -d local /home/restore > ./restore.txt 2>&1
#如果报错,auth failed,加上 --authenticationDatabase admin即可
mongorestore -h 127.0.0.1 --port 27017 -u sa -p sa -d local --authenticationDatabase admin /home/restore > ./restore.txt 2>&1

#导入某个数据库中的某个collection
#mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c collection名 -o 文件存在路径(文件夹) > 导入过程.txt 2>&1
mongorestore -h 127.0.0.1 --port 27017 -u sa -p sa -d local -c test /home/restore > ./restore.txt 2>&1
#如果报错,auth failed,加上 --authenticationDatabase admin即可
mongorestore -h 127.0.0.1 --port 27017 -u sa -p sa -d local -c test --authenticationDatabase admin /home/restore > ./restore.txt 2>&1

7.启动/停止mongodb

#启动
/home/mongodb57020/mongodb-linux-x86_64-rhel62-3.2.4/bin/mongod -f /home/mongodb57020/mongod.conf
#停止
/home/mongodb57020/mongodb-linux-x86_64-rhel62-3.2.4/bin/mongod -f /home/mongodb57020/mongod.conf --shutdown

8.MongoDB释放硬盘空间

db.runCommand({ compact: "需要释放磁盘空间的collection" })
转载请备注引用地址:编程记忆 » mongodb相关操作