美文网首页
mongoDB [命令行指令] 学习

mongoDB [命令行指令] 学习

作者: squidbrother | 来源:发表于2019-12-08 23:13 被阅读0次
    数据库的概念

    官网宣传描述:
    MongoDB是一个通用的、基于文档的分布式数据库,它是为现代应用程序开发人员和云时代而构建的。没有数据库能让你更有效率。

    1.数据库与文件的差异
    数据库有表,行,列,更加方便操作数据
    数据库提供了接口,方便nodejs php java .net使用 增删查改 功能

    2.传统数据库与非关系型数据库
    NoSQL - not only sql 20世纪80年代出现,现在大数据时代又被重视

    3.使用场景
    数据库高并发与高读写的情况下
    改良数据高存储与访问的需求
    数据高可扩展性时候

    4.数据库格式差异
    Nosql是一个key value形式

    5.Nosql存储数据库类型
    key-value形式

    6.为什么选择mongoDB
    介于关系型数据库与非关系型数据库之间的产品
    是非关系型数据库中功能最丰富,最像关系型数据库的
    几乎可以实现类似关系型数据库单表查询的绝大部分功能
    还支持对数据建立索引
    特点:高性能,易部署,存储数据非常方便

    安装与配置

    官网下载

    1.安装
    根据操作系统、安装包类型、版本 下载包

    2.安装完毕后,配置环境变量
    找到mongoDB安装的bin目录,将其路径贴到 我的电脑 高级 环境变量 path中 添加在后面

    3.检测全局环境配置完毕与否
    win+r cmd进入命令行,输入 mongo 回车

    启动与访问

    自定义一个文件夹,用来存储mongoDB数据, 放置在非操作系统盘符,防止重装系统,删除数据库
    如:
    D:\mysoft\myMongoLib

    • 启动数据库服务器
      (不能关闭这个命令行窗口,否则这个数据库会被关闭;不能圈选其中的代码段,否则会挂起)
    mongod --dbpath 存储mongoDB数据文件路径
    
    • 自定义端口号 (尽量使用4位以上的)
    mongod --dbpath 存储mongoDB数据文件路径 --port xxxx
    
    • 启动数据库客户端 (重新打开新的命令行窗口输入)
    mongo
    

    会显示连接的URL地址信息: 如 mongodb://127.0.0.1:27017/ 后面可以加上库名称

    • 连接远程数据库
    mongo IP地址:27017
    
    开机启动

    mongoDB 4.0+ 会自动在 任务管理器 - 服务 中开启,无需开机手动启动数据库客户端

    常用操作指令 / sql常用指令

    【增】
    先切换库,再增加表下对应数据 (有了数据,自然表也有了,库如果之前没有,也有了;前提要先use下)
    use 库名
    db.表名.insert({ 'name':'zhangsan' })

    【查】
    show dbsshow databases --- 显示所有的库
    db --- 显示当前所在数据库
    use 库名 --- 切换库
    show collections --- 显示当前库下所有的表
    db.表名.find() --- 显示某一张表所有的数据
    db.表名.find().count() --- 显示当前所有数据的条数

    • 精确搜索
      db.表名.find({'name':'zhangsan'}) --- 查找name为zhangsan的数据
    • 范围搜索
      db.表名.find({'age':{$gt:18}}) --- 显示age大于18的数据
      db.表名.find({'age':{$gte:18}}) --- 显示age大于等于18的数据
      db.表名.find({'age':{$lt:20}}) --- 显示age小于20的数据
      db.表名.find({'age':{$lte:20}}) --- 显示age小于等于20的数据
      db.表名.find({'age':{$gt:10,$lt:20}}) --- 显示age大于10且小于20的数据
    • 或查找
      db.表名.find({$or:[{'age':18},{'age':20}]}) --- 显示age等于18 或者 等于20的数据
    • 模糊搜索
      db.表名.find({'name':/^z/}) --- 显示name以z开头的数据

    【查询后修饰结果】

    • 返回结果升降序显示
      db.表名.find().sort({'age':1}) --- 显示所有数据,且按照年龄升序排列
      db.表名.find().sort({'age':-1}) --- 显示所有数据,且按照年龄降序排列
    • 显示规定条数结果
      db.表名.find().limit(2) --- 显示前2条
      db.表名.find().skip(2).limit(2) --- 显示第3、第4条
    • 只显示结果中的某一个字段
      db.表名.find({},{'name':1}) --- 显示所有数据,且只显示name字段信息

    【改】
    对张三增加一个年龄
    db.表名.update({ 'name':'zhangsan' },{$set:{'age':11}})
    修改张三的名字
    db.表名.update({'name':'zhangsan'},{$set:{'name':'lisi'}})

    【删】

    • 删除数据的某一个字段
      db.表名.update({'name':'news'},{$unset:{'__v':''}}) --- 删除name为news数据的'__v'的字段

    • 批量 删除数据的某一个字段
      db.表名.update({'name':'news'},{$unset:{'__v':''}},{multi:true}) --- 批量删除上述操作

    • 删除数据
      db.表名.remove() --- 删除当前表所有的数据(意味着这个表也就消失了)
      db.表名.remove({'age':20}) --- 删除当前表age为20的数据
      db.表名.remove({'age':20},{justOne:true}) --- 删除表内age为20的数据,且只删除第一个被找到的

    • 删除表
      db.表名.drop() --- 删除指定的表

    • 删除库
      db.dropDatabase() --- 删除当前所在的库

    索引操作与查询时间

    大批量数据查询,需要消耗时间,如果查询的属性,正好有被用于索引,则查询速度会更加迅速

    【获取索引】
    db.表名.getIndexes() --- 获取表内的所有索引
    【添加索引】
    db.表名.ensureIndex({'name':1}) --- 为当前表的name字段,增加索引
    db.表名.ensureIndex({"userId":1},{"unique":true}); --- 为当前表的userId字段,增加索引(且是唯一的)
    【删除索引】
    db.表名.dropIndex({'name':1}) --- 删除当前表的name字段索引
    【查询时间】
    db.表名.find({"name":"zhangsan"}).explain("executionStats") --- 查询name为zhangsan的数据 所消耗的时间
    通过executionTimeMillis看反应时间(单位毫秒)

    相关文章

      网友评论

          本文标题:mongoDB [命令行指令] 学习

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