• Nodejs系列第16章 mongodb1



    1) 安装 mongodb软件
      https://www.mongodb.com/
      选择完全安装

    2) 设置环境变量
      找到安装目录,找到mongo命令所在位置:C:Program FilesMongoDBServer3.2in
      将命令位置添加到环境变量:
        我的电脑(计算机) 点击鼠标右键-> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 修改PATH的值(添加一个分号,将数...)

    3) 创建文件夹
      在非系统盘(D盘)下创建一个文件夹mongodb,再创建两个子文件夹 db 和 log
        d:mongdb
        d:mongdbdb
        d:mongdblog

    4) 将mongodb挂载成windows服务
      使用命令挂载服务
        mongod --dbpath "d:开发区mongodbdb" --logpath "d:开发区mongodblogMongoDB.log" --install --serviceName "MongoDB"

      服务如何查看
        在“计算机”上点鼠标右键 -> 管理 ->服务与应用程序 -> 服务
        运行命令 services.msc

      补充说明服务的命令
        net start mongdb //开启服务
        net stop mongdb //关闭服务
        sc delete mongdb //卸载服务

    5) 常见问题
      32位操作系统的问题
        必须添加存储引擎设置: --storageEngine mmapv1 mongod --storageEngine mmapv1 --dbpath "d:mongdbdb" --logpath "d:mongdb..."...

      win8或win10操作的权限问题
        必须以管理员身份运行cmd命令行,再执行挂载服务命令

    6. 数据库基础命令
      1) 进入数据库管理模式
      在命令行中运行:mongo 进入数据库管理模式
      在数据库管理模式中只能执行数据库命令,不能执行其它命令

      exit 退出数据库管理模式

      2) 常用的命令
      a. 数据库命令
      显示所有的数据库列表
      show dbs

      创建数据库/进入数据库
      use 数据库名
      如果数据库名不存在,则创建
      如果数据库已存在,则进入

      查看当前数据库是谁
      db

      删除数据库
      db.dropDatabase();

      b. 集合的命令
      显示当前数据库中的所有集合
      show collections

      创建集合
      db.集合名.insert({});
      通常,在创建数据时自动创建集合,不需要单独创建

      删除集合
      db.集合名.drop();

      3) 文档(数据)的操作【重点】
    a. 新增文档(数据)
    db.集合名.insert({JSON数据});
    db.集合名.save({JSON数据});

    insert 和 save 方法的区别:
    .insert() 向集合中插入一条数据【推荐使用】
    .save() 向集合中添加一条数据,如果集合中已经存在该数据则更新

    b. 查询文档(数据)
    db.集合名.find(); 【重点】//查找当前集合中的所有数据
    db.集合名.find({条件对象}); //符合条件的数据被查出来
    db.集合名.findOne(); //查找集合中的第一条数据
    db.集合名.find().pretty(); //将找到的数据以格式化的结果显示出来

    c. 修改数据
    db.集合名.update(查找对象, 修改结果);

    例如:
    db.user.update({"username":"张三"},{"age":18});

    d. 删除数据
    db.集合名.remove({}); //删除当前集合中的所有数据
    db.集合名.remove({条件对象});
    例如:
    db.user.remove({"age":18});
    db.user.remove({});

    7. 高级用法
    1) 按指定条件查询
    //查找到所有的女歌星
    db.singer.find({"sex":"女"});

    //SQL : select * from singer where sex = '女'

    //查找所有中国女歌星
    db.singer.find({"country":"中国","sex":"女"});

    2) 大于
    语法:db.集合名.find({字段名:{$gt:值}});

    //查找年龄大于50岁的所有数据
    db.singer.find({"age":{$gt:50}});

    //SQL : select * from singer where age > 50

    3) 大于等于
    语法:db.集合名.find({字段名:{$gte:值}});

    //查找年龄大于等于50岁的所有数据
    db.singer.find({"age":{$gte:50}});

    4) 小于
    语法:db.集合名.find({字段名:{$lt:值}});

    //查找年龄小于30岁的所有数据
    db.singer.find({"age":{$lt:30}});

    5) 小于等于
    语法:db.集合名.find({字段名:{$lte:值}});

    //查找年龄小于等于30岁的所有数据
    db.singer.find({"age":{$lte:30}});

    6) 查询指定范围的数据
    语法:db.集合名.find({字段名:{$gt:小值, $lt:大值}});

    //查找年龄30-0岁之间的所有数据
    db.singer.find({"age":{$gt:30,$lt:40}});

    //SQL : select * from singer where age>30 and age<40
    //SQL : select * from singer where age between 30 and 40

    7) $in 子句
    语法:db.集合名.find({"字段名":{$in:[数组值]}});

    //找出刘德华、张学友、郭富城
    db.singer.find({"namme":{$in:['刘德华','张学友','郭富城']}});

    //SQL : select * from singer where name in ('刘德华','张学友','郭富城')

    8) $nin 子句
    语法:db.集合名.find({"字段名":{$nin:[数组值]}});

    9) 按数组元素的个数查找
    语法:db.集合名.find({"字段名":{$size:数量}});

    //查找只有一个代表作的歌手
    db.singer.find({"works":{$size:1}});

    10) $or 子句
    查找多条件时,符合其中一个就找出来
    语法:db.集合名.find({$or:[{"字段名":值},{"字段名2":值2}]});

    某个活动必须要刘德化参加,另外需要团队的全部女歌手配合演出,领导安排你帮忙打印歌手资料
    db.singer.find({$or:[{"name":"刘德华"},{"sex":"女"}]});

    //SQL : select * from singer where name="刘德华" or sex="女"

    11) 不等于
    语法:db.集合名.find({"字段名":{$ne:值}});

    12) 取模运算,条件相当于 字段名%10==1 即字段名除以10余数为1的
    语法:db.集合名.find({"字段名":{$mod:[10,1]}});

    13) $exists
    语法:db.集合名.find({"key":{$exists:true|false}});

    $exists 字段存在,true返回存在字段key的数据,false返回不存在字段key的数据

    8.其它重要语句
    1) 排序 sort()
    语法:db.集合名.find({}).sort({"字段名":1, "字段名":-1});
    说明:1是升序(从小到大),-1是降序(从大到小)

    //对所有歌手按年龄进行降序排序
    db.singer.find().sort({"age":-1});
    db.singer.find().sort({"age":-1, "score":1});

    2) 限制输出 limit() skip()
    .limit(数字) //限定输出数据的条数
    .skip(数字) //跳过指定的数据条数

    //只查找年龄最大的三个人
    db.singer.find().sort({"age":-1}).limit(3);

    //查看年龄在第三、第四、第五的三个人
    db.singer.find().sort({"age":-1}).skip(2).limit(3);

    扩展:这两个限定输出的语句主要用于分页
    数据太多,在一个页面显示不完,可以分多个页面显示数据,就叫分页

    场景:现在有100条数据,每页显示10条,一共有多少页?10页
    如果当前在第2页上,应当显示哪些数据?11-20之间的数据

    3) 返回结果集的条数 count()
    语法:db.集合名.find().count();

    注意:在加入skip()和limit()这两个操作时,要获得实际返回的结果数,需要一个参数true,否则返回的是符合查询条件的结果总数
    db.集合名.find().skip(5).limit(5).count(true);

    3) 模糊查询
    语法:db.singer.find({"字段名":/值/});

    //需求:找出所有姓刘的人
    db.singer.find({"name":/刘/i});

  • 相关阅读:
    java 单例模式-饿懒汉模式
    Java注解
    Java集合
    Java数据类型
    java实现多线程三种方法
    Java并发 线程池
    spring ioc(反转控制)
    事件驱动的Java框架
    js 标签属性与导航
    input 标签和a标签实现超链接的区别
  • 原文地址:https://www.cnblogs.com/sky6699/p/12681164.html
Copyright © 2020-2023  润新知