美文网首页
mongodb 杂谈(一)

mongodb 杂谈(一)

作者: 梦醒家先生 | 来源:发表于2018-08-10 01:06 被阅读0次

    mongodb

    安装

    Ubuntu

    sudo apt-get install mongodb
    

    Mac

    brew install mongodb
    

    启动

    1. 直接启动
    //服务端的mongod//客户端mongo
    sudo mongod
    

    注意事项:启动失败

    1. 数据库不存在 创建文件夹 /data/db

    2. 权限不够,添加 sudo

    1. 启动参数说明

    mongod --help
    --port 进行设置默认端口
    --dbpath 设置数据库路径
    --config 通过指定配置文件去启动mongodb,再配置文件中可以配置默认端口、数据库路径等等

    关闭

    1. 直接kill关闭(非常不推荐使用,最好不要使用容易损坏硬盘)
    ps -ax | grep mongod
    sudo kill -9 进程号
    
    1. 通过进入数据库中直接关闭
    mongo
    use admin
    db.shutdownServer()
    

    数据库

    显示数据库列表

    // shushu s
    show databases
    // 或
    show dbs
    

    显示当前数据库

    db
    

    进入数据库

    use 数据库名
    

    创建数据库

    只要插入数据就自动创建数据库

    删除数据库

    // 前提(删除当前指向的数据库,如果数据库不存在,则什么也不做)
    use db
    // 删除数据库
    db.dropDatabase()
    

    集合(表)操作

    创建集合

    1. 默认情况下只要插入数据自动创建集合
    2. 手动创建集合
    db.createCollection(集合名称)
    

    显示集合列表

    show collections
    

    删除集合

    db.集合名.drop()
    

    数据操作

    创建

    // 插入数据,json串
    db.my_coll.insert({
        "a":"x",
        "b":{
            "q":"a",
            "p":"b"
        },
        "c":[1,2,3]
    })
    // 批量插入
    data = [
        {"test01":"val1"},
        {"test02":"val2"},
        {"a":{"p":"q"},"b":123}
    ]
    db.my_coll.insertMany(data)
    

    更新

    默认整体更新,如果需要局部更新需要使用 $set,默认是仅更新一次,如果需要批量更新需要添加第三个参数 multi

    // 默认更新是完整更新,也就是替换
    db.stu.update(
        // 更新条件
        {
            "name":"郭靖"
        },
        // 更新内容
        {
            "age":88
        }
    )
    // 局部更新
    db.stu.update(
        // 更新条件
        {
            "name":"黄蓉"
        },
        // 更新内容
        {
            // 局部更新内容
            $set:{
                "age":80
            }
        }
    )
    
    // 默认情况下是只更新一次,如果需要批量更新,添加第三个参数,multi 设置为True 就是批量更新
    db.stu.update(
        // 更新条件
        {
            "age":{$gt:20}
        },
        // 更新内容
        {
            // 局部更新内容
            $set:{
                "age":36
            }
        },
        // 更新方式
        {
            multi:true
        }
    )
    
    
    

    删除

    // 删除
    db.stu.remove(
        // 删除条件
        {
            "age":36
        },
        // 如果想仅仅删一条
        {
            justOne:true
        }
    )
    
    // 清空数据
    db.stu.remove({})
    
    

    保存

    // 通过 _id 查询数据如果存在就更新,如果不存在就插入
    db.my_test.save({
        "_id":1,
        "a":"b"
    })
    

    查询

    简单查询

    db.集合名.find()
    

    复杂查询

    // 默认查询是 并
    db.stu.find(
        // 查询条件
        {
            "hometown":"蒙古",
            "age":20
        }
    )
    // 比较运算符($gt,$gte,$lt,$lte,$ne)
    db.stu.find(
        // 查询条件
        {
            "age":{$gt:20}
        }
    )
    
    // 逻辑运算符 $or
    db.stu.find(
        // 查询条件
        {
            "age":{$gt:20},
            $or:[
                {"hometown":"蒙古"},
                {"gender":false}
            ]
        }
    )
    
    // 范围运算符 $in,$nin
    // 表示在列表中的
    db.stu.find(
        // 查询条件
        {
            "age":{$nin:[18,45]}
        }
    )
    
    // 正则表达式
    db.stu.find(
        // 查询条件
        {
            "name":/^黄/
        }
    )
    db.stu.find(
        // 查询条件
        {
            "name":{$regex:"^黄"}
        }
    )
    
    // 自定义查询
    db.stu.find(
        // 查询条件
        {
            $where: function(){
                // 返回 true 表示符合条件
                // this 表示当前记录
                return this.age >= 18 && this.gender == false
            }
        }
    )
    
    

    高级查询

    // limit 和 skip
    // 注意: 先 skip 再 limit 不管谁先谁后
    db.stu.find().limit(2)
    db.stu.find().skip(1)
    db.stu.find().limit(2).skip(1)
    db.stu.find().skip(1).limit(2)
    
    // 投影 是否显示数据
    // 在不同的数据库版本中 方式不同
    db.stu.find(
        // 查询条件
        {},
        // 投影方式,显示数据字段
        {
            "name":1
        }
    )
    
    // 排序
    // 参数1为升序排列
    // 参数-1为降序排列
    db.stu.find().sort(
        {
            age:-1,
            hometown:1
        }
    )
    // 统计个数
    db.stu.find().count()
    
    // 去除重复
    // 第一个参数是去重的字段
    // 第二个是查询条件
    db.stu.distinct('hometown',{age:{$gt:18}})
    
    
    

    相关文章

      网友评论

          本文标题:mongodb 杂谈(一)

          本文链接:https://www.haomeiwen.com/subject/wzxhbftx.html