搜索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 ps
进入mongo【以 admin 用户身份进入mongo,相当于oracle的用户也就是库,mysql的库】
docker exec -it 4abc1e6e12bd mongo admin
创建一个 admin 管理员账号
db.createUser({ user: 'admin', pwd: '密码', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
对 admin 进行身份认证
db.auth("admin","密码");
用工具连接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"})