zoukankan      html  css  js  c++  java
  • Mongodb Study Notes

    图形化工具的使用:

    基本操作

    获取当前数据库名称

    db.getName()
    

    创建数据库

    # use 数据库名, 如果有就切换,没有就创建
    use test_db
    

    查看数据库状态

    db.stats()
    

    获取当前数据库版本

    db.version()
    

    查看数据库相关帮助信息

    db.help()
    

    增删改查

    MySQL 等关系型数据库中,必须先设计表,然后才能进行 增删改查 的操作

    mongodb 中,不需要设计表,

    插入数据

    • 插入普通数据
    // db.集合.insert({}); 集合相当于mysql中的数据表
    // insert({...}) 传递一个 bson 格式的字符串, 类似 json
    db.users.insert({name:'zs',sex:'男', height: '172'});
    
    • 插入多维数据
    db.users.insert({
        name:'alex', age:18, height: '172', other: {
            class: '101',
            like: ['code', 'db'],
        } 
    });
    
    • 数组数据
    db.users.insert({name:'jason', likes: ['code', 'db', 'study', 'sleep']});
    

    查询数据

    笼统查询

    • 查询所有数据
    // db.集合.find()       相当于sql语句中的:  select * from users
    
    db.users.find();
    
    • 查询一条数据
    // db.集合.findOne()       相当于sql语句中的: select * from users limit 1;
    
    db.users.findOne();
    

    带条件的查询

    • 查询所有符合条件的数据
    // db.集合.find(条件)    相当于sql语句中的: select * from users where name='zs';
    
    db.users.find({name:'zs'})
    
    • 查询符合条件的第一条数据
    // db.集合.findOne(条件)  相当于sql语句中的:  select * from users where name='zs' limit 1;
    db.users.findOne({name:'zs'})
    

    范围条件查询

    • 查询指定字段大于或者小于某个值的所有数据

      • $lt 小于 相当于sql语句中的 <
      // 查询users集合中身高字段小于172的所有数据
      // SQL语句: select * from users where height < 172
      db.users.find({height:{'$lt': 172}});
      
      • $gt 大于 相当于sql语句中的 >
    // 查询users集合中身高字段大于172的所有数据
    // SQL语句: select * from users where height > 172
    db.users.find({height:{'$gt': 172}}); 
    
    • 查询指定字段大于等于或者小于等于的所有数据

      • $lt 小于 相当于sql语句中的 <=
      // 查询users集合中身高字段小于等于172的所有数据
      // select * from users where height < 172
      db.users.find({height:{'$lte': 172}});
      
      • $gt 大于 相当于sql语句中的 >=
      // 查询users集合中身高字段大于等于172的所有数据
      // select * from users where height > 172
      db.users.find({height:{'$gte': 172}});
      
    • 查询指定字段不等于某个值的所有数据

    // 查询指定字段不等于某个值的所有数据
    // select * from user != 'zs'
    db.users.find({name: {'$ne': 'zs'}});
    

    注: 使用关键字 $le $lte $gt $gte $ne 必须使用引号引起来, 建议用单引号

    设置多个查询条件

     // SQL语句中的and操作符: select * from users where height<=172 and age>10
    
    // 查询出所有的height字段小于等于172 并且 age字段大于10的所有数据
    db.users.find({height:{'$lte': 172 },age: {'$gt': 10}});
    
    // 查询出所有height字段小于180字段 并且 age 字段等于18 的所有数据
    db.users.find({height: {'$lt': 172}, age: 10})
    
    
    // 查询出 age字段等于10 或者 height字段大于等于 180 的所有数据(文档)
    // 相当于SQL语句中的: select * from users where age=10 or height>=180
    db.users.find({
        "$or": [
            { age: 10 },
            {height:{"$gte": 180 } }
        ]
    });
    

    多维字段的查询

    // 查询 other_info 字段中 class 的值为101的数据
    db.users.find({
        "other.class" : "101",
    });
    

    数组条件的限制

    // 表示查询 likes 字段中有 code 和 music 的所有数据(文档)
    db.users.find({
        likes:{
            "$all": ["code", "music"]
        }
    });
    
    
    

    限制查询的字段

    // 表示查询出age等于18的所有数据(文档), 只查询name字段
    db.users.find({age: 18}, {name:1})
    
    // 表示查询出age等于18的所有数据(文档), 除了name以外的所有字段
    db.users.find({age: 18}, {name:0})
    
    // 表示查询出age字段为18的所有数据(文档)
    // 表示只显示name字段并且排除默认的_id字段 {"age":18},{name:1,_id:0}
    db.users.find({"age":18},{name:1,_id:0})
    

    注: 限定条件输出时,除了默认的_id字段以外,要么全部输出,要么全部不输出,不能一个1一个0,

    1查询,0排除, 不然会报错

    修改数据

    • 使用 $set 修改字段,只修改要修改的字段的值,其他字段不变化
    // 表示将name字段为zs的所有数据的 age 字段修改为 18,其他字段不变
    db.users.update({ name: 'zs'},{'$set': {age : 18}});
    
    • 不使用 $set 修改设置的字段, 除_id字段以外,其他字段就删除
    // 表示将name字段zs的所有数据的的 age 字段修改为 20, 并且删除其他所有字段
    db.users.update( { name: 'zs' }, {age: 20});
    
    • 修改字段时,有就直接修改没有就添加
    // 表示将name字段为zs的所有数据的, name字段改为xiaoZhang, nickName改为xiaoZhang 其他字段全部删除
    db.users.update( { name: 'zs' }, {name: "ZhangShang", nickName: "xiaoZhang"})
    

    数据删除

    • 删除指定条件的数据
    // 表示删除所有, name为zs的数据
    db.users.remove({ name: "zs" })
    
    // 表示删除所有 name字段为zs 并且 age字段为100 的数据
    db.users.remove({name:"zs", age:100});
    
    • 删除字段
    // 表示删除name字段值为zhangShang的所有数据 的 age 字段,{"age": 1}
    // 这个值可以是任意的值,比如(字符串,true,null)但是不能不写
    db.users.update({name:'zhangShang'}, { '$unset': {"age": 1} });
    

    限制查询条数 (分页)

    /* 表示查询符合条件的跳过前5条后面的10条数据 */
    db.users.find().skip(5).limit(10);
    

    排序 sort

    • 默认是安装 _id 字段升序排序, 利用 sort 方法可以根据指定的方法排序
    /* 根据name字段升序排序,如果有相同的就根据 height 字段降序排序*/
    db.users.find().sort({
        name: 1,
        height: -1
    });
    

    限制分页条数并且排序

    db.users.find().skip(5).limit(5).sort({
        name: 1,
        age: -1
    });
    
    • 1 表示升序, -1 表示降序
  • 相关阅读:
    Python for Infomatics 第14章 数据库和SQL应用四(译)
    展望2017
    bing的简单英文字典工具
    自我安慰
    Python for Infomatics 第14章 数据库和SQL应用三(译)
    Python for Infomatics 第14章 数据库和SQL应用二(译)
    Python for Infomatics 第14章 数据库和SQL应用一(译)
    希望父亲早日恢复
    Python for Infomatics 第13章 网页服务四(译)
    Python for Infomatics 第13章 网页服务三(译)
  • 原文地址:https://www.cnblogs.com/liaohui5/p/10581639.html
Copyright © 2011-2022 走看看