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"})