mongodb运维知识
1) docker中运行mongodb
镜像下载
执行 docker search mongo 命令和docker pull mongo
运行mongo镜像:
docker run \
--name mongodb_server \
-p 27017:27017 \
-v /mysoft/mongodb/configdb:/data/configdb/ \
-v /mysoft/mongodb/db/:/data/db/ \
-d mongo --auth
采用admin用户进入mongodb
docker exec -it a7e5d4e4ca69 mongo admin
创建admin管理员账户
db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
以 admin 用户身份进入mongo
docker exec -it a7e5d4e4ca69 mongo admin
对 admin 用户 进行身份认证
db.auth("admin","admin123456");
创建 用户、密码和数据库
db.createUser({ user: 'swen', pwd: 'swen123456', roles: [ { role: "readWrite", db: "app" } ] });
以 admin 用户身份进入mongo
docker exec -it a7e5d4e4ca69 mongo admin
对 swen 进行身份认证
db.auth("swen","swen123456");
切换数据库
use app
添加数据
db.test.save({name:"zhangsan"});
查看数据库
show dbs
数据库集合(类似于表)操作命令
show collections
db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
db.mycol2.insert({"name" : "菜鸟教程"})
db.mycol2.drop()
数据库文档(类似于一行一行数据)操作命令
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
db.col.find()
document=({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
});
db.col.insert(document)
var document = db.collection.insertOne({"a": 3})
document
{
"acknowledged" : true,
"insertedId" : ObjectId("571a218011a82a1d94c02333")
}
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
db.col.find().pretty()
db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
-- pretty() 方法以格式化的方式来显示所有文档。
db.col.remove({'title':'MongoDB 教程'})
db.col.remove(DELETION_CRITERIA,1)
db.repairDatabase()
db.inventory.deleteMany({ "likes" : 110 })
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
2) mongodb的导入导出
一、导出工具mongoexport
Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。
可通过 mongoexport --help 命令查看具体使用方法
参数说明:
- -h:指明数据库宿主机的IP
- -u:指明数据库的用户名
- -p:指明数据库的密码
- -d:指明数据库的名字
- -c:指明collection的名字
- -f:指明要导出那些列
- -o:指明到要导出的文件名
- -q:指明导出数据的过滤条件
示例:
导出goods数据库下students集合的数据
执行图中命令
bin目录下生成students.dat文件,内容如下(也可在命令行中执行 type students.dat 查看)
从上面的结果可以看出,我们在导出数据时没有显示指定导出样式 ,默认导出了JSON格式的数据。实际情况下常常需要导出csv格式的数据,命令如下
mongoexport -d goods -c students --csv -f classid,name,age -o students_csv.dat
参数详解:
- -d:指明使用的库,本例中为goods
- -c:指明要导出的集合,本例中为students
- -o:指明要导出的文件名,本例中为students_csv.dat
- -csv:指明要导出为csv格式
- -f:指明需要导出classid、name、age这3列的数据
查看文件
二、导入工具mongoimport
Mongodb中的mongoimport工具可以把一个特定格式文件中的内容导入到指定的collection中。该工具可以导入JSON格式数据,也可以导入CSV格式数据。
可通过 mongoimport --help 命令查看具体使用方法
参数说明:
- -h:指明数据库宿主机的IP
- -u:指明数据库的用户名
- -p:指明数据库的密码
- -d:指明数据库的名字
- -c:指明collection的名字
- -f:指明要导入那些列
示例
先删除students集合数据,验证
db.students.remove({});
db.students.find();
导入之前导出的students.dat文件
上面演示的是导入JSON格式的文件中的内容,如果要导入CSV格式文件中的内容,则需要通过--type参数指定导入格式
mongoimport -d goods -c students --type csv --headerline --file students_csv.dat
参数详解
- -d:指明数据库名,本例中为goods
- -c:指明collection名,本例中为students
- -type:指明要导入的文件格式
- -headerline:指明第一行是列名,不需要导入
- -file:指明要导入的文件
- students_csv.dat:导入的文件名