zoukankan      html  css  js  c++  java
  • MongoDB

    一:MongoDB简介

      MongoDB是一个面向文档的数据库,而不是关系型数据库。具有更好的扩展性,MongoDB从一开始设计的时候就是奔着分布式去的,只需要简单的配置就可以实现高效的分布式存储,被大量的运用于大数据领域。并且MongoDB不再有预定义模式:文档的键(key)和值(value)不再是固定的类型和大小。

    二:MongoDB与其他类型数据库的比较

      1.MongoDB与MySQL:MongoDB是非关系型数据库,数据量大。而MySQL是关系型数据库,基于硬盘存储的,当并发量过大的时候,mysql可能无法支撑。

      2.MongoDB与Redis:MongoDB是最像关系型的非关系型数据库,更加适用于大数据。而Redis更倾向于并发较小,数据较小,性能更高。

    三:安装

    1: 4.0下载地址https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msi

    2:安装时去除多余的组件安装提高速度

    启动MongoDB,默认端口好(27017)

    三:MongoDB的使用

    1.首先将MongoDB的安装文件夹下的bin目录添加到环境变量里面

    2.打开cmd,输入mongo

     

    3.开启用户验证

       3.1在配置环境中配置安全认证

     

    key都是固定的不能随便写,每一个key都有特殊含义。其中 {"role":"root"} role固定的key root是角色的名字 有可选范围如root readWrite read等。

    exit退出cmd后,重启服务:

    4. 登录

    方式一:账号密码

    方式二:游客

    四:库的操作

    use 数据库名称 ---->创建数据库
    db.dropDatabase ---->删除数据库
    show dbs  ---->查看所有数据库
    use   ---->切换数据,如果不存在会自动创建,新建的数据库是查看不到的,因为里面没有数据
    #创建数据库:
    use 数据库名称
    #如果有则切换没有则创建新的,注意的是如果如果库中没有数据show dbs 中则不显示!
    
    # 查看数据库:
    show dbs
    
    #删除
    db.dropDatabase()
    #注意区分大小写

    五:集合的操作

    集合是一个存储数据类型的容器类比mysql中的表

    #创建集合:
    db.user
    
    #查看集合:
    show collections
    show tables
    # 同样的数据集合中没有数据则 不会显示
    
    # 一下数据库之间没有任何关系仅仅是名字有相同部分 数据之间的关系需要应用程序维护
    db.blog
    db.blog.user
    db.blog.common
    
    #删除集合:
    db.blog.user.drop()

    六:基本数据类型

    1、在概念上,MongoDB的文档与Javascript的对象相近,因而可以认为它类似于JSON。JSON(http://www.json.org)是一种简单的数据表示方式:其规范仅用一段文字就能描述清楚(其官网证明了这点),且仅包含六种数据类型。

    2、这样有很多好处:易于理解、易于解析、易于记忆。然而从另一方面说,因为只有null、布尔、数字、字符串、数字和对象这几种数据类型,所以JSON的表达能力有一定的局限。

    3、虽然JSON具备的这些类型已经具有很强的表现力,但绝大数应用(尤其是在于数据库打交道时)都还需要其他一些重要的类型。例如,JSON没有日期类型,这使得原本容易日期处理变得烦人。另外,JSON只有一种数字类型,无法区分浮点数和整数,更别区分32位和64位了。再者JSON无法表示其他一些通用类型,如正则表达式或函数。

    4、MongoDB在保留了JSON基本键/值对特性的基础上,添加了其他一些数据类型。在不同的编程语言下,这些类型的确切表示有些许差异。下面说明了MongoDB支持的其他通用类型,以及如何正在文档中使用它们

    #1、null:用于表示空或不存在的字段
    d={'x':null}
    #2、布尔型:true和false
    d={'x':true,'y':false}
    #3、数值
    d={'x':3,'y':3.1415926}
    #4、字符串
    d={'x':'egon'}
    #5、日期
    d={'x':new Date()}
    d.x.getHours()
    #6、正则表达式
    d={'pattern':/^egon.*?nb$/i}
    
    正则写在//内,后面的i代表模式,可省略:
    i 忽略大小写
    m 多行匹配模式
    x 忽略非转义的空白字符
    s 单行匹配模式
    
    #7、数组
    d={'x':[1,'a','v']}
    
    #8、内嵌文档
    user={'name':'jerry','addr':{'country':'China','city':'YT'}}
    user.addr.country
    
    #9、对象id:是一个12字节的ID,是文档的唯一标识,不可变
    d={'x':ObjectId()}
    
    #案例:
    db.tb.insert({"a":null,"b":1.1,"c":true,"d":100,"e":"aaaaaa","f":new Date(),"g":/^jerry.*nice$/i,"h":[1,2],"j":{"name":"smallJerry"}})
    
    db.tb.find()
    db.tb.find().pretty() # 格式化显示

    七:查询数据

    =============================比较运算=============================
    find 查找所有匹配数据
    findOne 查找第一个匹配的
    
    # SQL:=,!=,>,<,>=,<=
    # MongoDB:{key:value}代表什么等于什么,"$ne","$gt","$lt","gte","lte",其中"$ne"能用于所有数据类型
    >  <  !=  >=   <=
    gt lt ne gte lte
    find 查找所有匹配数据
    findOne 查找第一个匹配的
    
    
    #1、select * from db1.user where name = "cxx";
    db.user.find({'name':'cxx'})
    
    #2、select * from db1.user where name != "cxx";
    db.user.find({'name':{"$ne":'cxx'}})
    
    #3、select * from db1.user where id > 2;
    db.user.find({'_id':{'$gt':2}})
    
    #4、select * from db1.user where id < 3;
    db.user.find({'_id':{'$lt':3}})
    
    #5、select * from db1.user where id >= 2;
    db.user.find({"_id":{"$gte":2,}})
    
    #6、select * from db1.user where id <= 2;
    db.user.find({"_id":{"$lte":2}})
    =============================逻辑运算=============================
    # SQL:and,or,not
    # MongoDB:字典中逗号分隔的多个条件是and关系,"$or"的条件放到[]内,"$not"
    
    #1、select * from db1.user where id >= 2 and id < 4;
    db.user.find({'_id':{"$gte":2,"$lt":4}})
    
    #2、select * from db1.user where id >= 2 and age < 40;
    db.user.find({"_id":{"$gte":2},"age":{"$lt":40}})
    
    #3、select * from db1.user where id >= 5 or name = "cxx";
    db.user.find({
        "$or":[
            {'_id':{"$gte":5}},
            {"name":"cxx"}
            ]
    })
    
    #4、select * from db1.user where id % 2=1;(除2余1)
    db.user.find({'_id':{"$mod":[2,1]}})
    
    #5、上题,取反
    db.user.find({'_id':{"$not":{"$mod":[2,1]}}})
    =============================成员运算=============================
    
    # SQL:in,not in
    # MongoDB:"$in","$nin"
    
    #1、select * from db1.user where age in (20,30,31);
    db.user.find({"age":{"$in":[20,30,31]}})
    
    #2、select * from db1.user where name not in ('alex','yuanhao');
    db.user.find({"name":{"$nin":['alex','yuanhao']}})
  • 相关阅读:
    组合博弈入门
    模拟练1
    鼠标点击 input,显示瞬间的边框颜色,对之修改与隐藏
    display: inline-block兼容性写法
    background-clip与background-origin两者的区别
    article标签和aside标签两者的理解
    jQuery插件实现左右无缝轮播
    JS面向对象基础2
    JS面向对象基础1
    CSS3的基础知识点
  • 原文地址:https://www.cnblogs.com/liuxiaolu/p/10711893.html
Copyright © 2011-2022 走看看