zoukankan      html  css  js  c++  java
  • 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"})

  • 相关阅读:
    常见算法之10---从第一字符串中删除第二个字符串中所有的字符
    常见算法之9---折半查找(二分查找)
    常用算法之8---找到数组中只出现一次的数字
    常见算法之7---判断是否所有小字符串里的字母在大字符串里都有
    常见算法之6---判断集合S之中是否存在两个数之和为指定大小N
    常见算法之5---单例模式[java]
    常见算法之4---正整数二进制表示中的1的个数
    常见算法之3---数组中出现次数超过一半的数字
    UVa 495
    《编程之美》笔记(一)
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/11163234.html
Copyright © 2011-2022 走看看