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

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

原文地址:https://www.cnblogs.com/xiaostudy/p/11163234.html