docker安装MongoDB

docker安装MongoDB创建用户,并用工具Robo连接简单CRUD

转载:https://www.cnblogs.com/xiaostudy/p/11163234.html

搜索mongo
docker search mongo

在这里插入图片描述

拉取mongo【这里默认为latest】
docker pull mongo

在这里插入图片描述

查看本地镜像

在这里插入图片描述

启动容器【就是安装,-v后面的参数表示把数据文件挂载到宿主机的路径,-p把mongo端口映射到宿主机的指定端口,--auth表示连接mongodb需要授权】
docker run -p 27017:27017 -v /tmp/db:/data/db -d mongo

在这里插入图片描述

停止容器:docker stop mongo 

在这里插入图片描述

查看运行中的容器
docker ps

在这里插入图片描述

 进入mongo【以 admin 用户身份进入mongo,相当于oracle的用户也就是库,mysql的库】
docker exec -it 4abc1e6e12bd mongo admin
4abc1e6e12bd 为docker ps列表 对应服务的 id 列信息

在这里插入图片描述

创建一个 admin 管理员账号
db.createUser({ user: 'admin', pwd: '密码', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

在这里插入图片描述

对 admin 进行身份认证
db.auth("admin","密码");
#修改密码使用
db.changeUserPassword("admin","123456");
用工具连接mongo【Robo】

https://robomongo.org/download

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

查看数据库
show databases

在这里插入图片描述

db.getMongo().getDBs()

在这里插入图片描述

查看当前数据库

db

在这里插入图片描述

mongo与mysql对应:库概念一样,mongo的集合对应mysql的表,mongo的文档对应mysql的行数据
创建
插入多条数据insert()

只能插入一条数据insertOne()

插入多条数据insertMany()

在这里插入图片描述

// teachers就是集合,{name: "smallstudy"}这些就是文档
db.teachers.insert([
    {name: "smallstudy"},
    {name: "zhangsan"},
    {name: "lisi"}
    ])
// 等价于
db.teachers.insertMany([
    {name: "smallstudy"},
    {name: "zhangsan"},
    {name: "lisi"}
    ])

一对多

db.teachers.insertMany([
    {name: "smallstudy"},
    {name: "zhangsan"},
    {name: "lisi"}
    ])
//创建后拿到teachers的id
db.students.insert([
    {name: "laodage", teacher_id: ObjectId("5c7102f7eda36e7892b9defb")},
    {name: "xiaolaodi", teacher_id: ObjectId("5c7102f7eda36e7892b9defb")},
    {name: "enen", teacher_id: ObjectId("5c7102f7eda36e7892b9defc")}
    ])


// 查询
var teacher_id = db.teachers.findOne({"_id": ObjectId("5c7102f7eda36e7892b9defb")})._id;
db.students.find({teacher_id: teacher_id});
// 或
db.students.find({teacher_id: db.teachers.findOne({"_id": ObjectId("5d25861568a280ba089f91d1")})._id});

查询

find()
findOne()

// 查集合下所有文档
db.teachers.find()
// 查集合下某个文档
db.teachers.find()[0]
db.teachers.find({"name": "zhangsan"})
// 查看集合长度,也就是看集合有多少文档
db.teachers.find().count()
db.teachers.find().length()
// 只显示2条数据
db.teachers.find().limit(2)
// 跳过第1条数据显示2条数据,用于分页
db.teachers.find().skip(1).limit(2)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

修改
update()

updateOne()

updateMany()

replaceOne()
db.teachers.update({"name": "lisi"}, {$set:{"name": "lisi2", "age": 25}})
// 这里的修改是先删除后添加的

在这里插入图片描述

在这里插入图片描述

删除
remove()

deleteOne()

deleteMany()

drop()
// 直接删集合
db.teachers.remove()
db.collectionName.drop()
// 删文档
db.teachers.remove({"name": "lisi2"})

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值