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

  • 相关阅读:
    揭秘 HashMap 实现原理(Java 8)
    并发容器之写时拷贝的 List 和 Set
    Maven 整合 SSH 框架
    Hibernate框架学习之注解配置关系映射
    Hibernate框架学习之注解映射实体类
    单用户,多设备登录问题
    ios scrollview button 延时点击问题
    Android 的 AlarmManager 和 wakeLock联合使用
    ios bitcode 机制对 dsym 调试文件的影响
    信息类型的异步更新方法
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/11163234.html
Copyright © 2011-2022 走看看