美文网首页
数据库(26)mongodb(上)

数据库(26)mongodb(上)

作者: 錦魚 | 来源:发表于2018-09-28 23:20 被阅读0次

    nosql的介绍

    • "NoSQL"⼀词最早于1998年被⽤于⼀个轻量级的关系数据库的名字
    • 随着web2.0的快速发展, NoSQL概念在2009年被提了出来
    • NoSQL在2010年⻛⽣⽔起, 现在国内外众多⼤⼩⽹站, 如facebook、 google、 淘宝、 京东、 百度等, 都在使⽤nosql开发⾼性能的产品
    • 对于⼀名程序员来讲, 使⽤nosql已经成为⼀条必备技能
    • NoSQL最常⻅的解释是“non-relational”, “Not Only SQL”也被很多⼈接受, 指的是⾮关系型的数据库

    关系和非关系型的介绍

    mongodb中基本的概念是 文档集合数据库

    图例1
    • 通过图示我们也可以更加直观的了解Mongo中的一些概念


      图例2

    关系数据库很强⼤,但是它并不能很好的应付所有的应⽤场景。 MySQL的扩展性差,⼤数据下IO压⼒⼤, 表结构更改困难



    mongdb的优势

    易扩展
    • NoSQL数据库种类繁多,但是⼀个共同的特点都是去掉关系数据库的关系型特性.数据之间⽆关系,这样就⾮常容易扩展
    大数据量,高性能
    • NoSQL数据库都具有⾮常⾼的读写性能,尤其在⼤数据量下,同样表现优秀.这得益于它的⽆关系性,数据库的结构简单
    灵活的数据模型
    • NoSQL⽆需事先为要存储的数据建⽴字段,随时可以存储⾃定义的数据格式.⽽在关系数据库⾥,增删字段是⼀件⾮常麻烦的事情.如果是⾮常⼤数据量的表,增加字段简直就是⼀个噩梦

    mongodb操作

    mongodb安装
    • sudo apt-get install mongodb
    mongodb基本命令
    • 启动sudo service mongod start
    • 停止sudo service mongod stop
    • 重启sudo service mongod restart
    • 查看是否启动成功ps ajx | grep mongod
    • 配置文件的位置/etc/mongod.conf
    • 默认端口27017
    • 日志的位置/var/log/mongodb/mongod.log
    • 启动本地客户端mongo
    • 查看帮助 mongo -help
    • 退出exit或者ctrl+c
    关于数据库的基本命令
    • 查看当前的数据库,默认为test数据库
    • db

    • 查看所有的数据库
    • show dbs 或者 show databases

    • 切换数据库
      如果数据库不存在,则创建,否则切换到指定数据库
    • use db_name

    • 删除当前的数据库
      注意:先切换到要删除的数据库
    • db.dropDatabase()
    关于集合的基础命令
    • 在mangodb里面没有表的概念,集合就相当于表,不手动创建集合,向不存在的集合中第一次加入数据时,集合就会被创建出来

    • 手动创建集合(一般很少使用)
      db.createCollection(name,options)

    • 查看集合
      show collections

    • 删除集合
      db.集合名称.drop()

    mangodb数据类型

    Object ID

    文档ID
    1、 每个文档都有一个属性,为_id,保证每个文档的唯一性
    2、 可以自己去设置_id插入文档,如果没有提供,那么MongoDB为每个文档提供了一个独特的_id,类型为objectID
    3、 ObjectID是一个12字节的十六进制数:
    (1)、 前4个字节为当前时间戳
    (2)、 接下来的3个字节的机器ID
    (3)、 接下来的2个字节中MongoDB的服务进程id
    (4)、 最后3个字节是简单的增量值

    String

    字符串,最常用,必须是有效的UTF-8

    Boolean

    存储一个布尔值,true或false

    Integer

    整数可以是32位或者64位,这取决于服务器

    Double

    存储浮点值

    Arrays

    数组或者列表,多个值存储到一个键

    Object

    用于嵌入式的文档,即一个值为一个文档

    Null

    存储Null值

    Timestamp

    时间戳,表示从1970-1-1到现在的总秒数

    Date

    存储当前日期或时间的Unix时间格式
    创建日期语句如下:参数的格式为YYYY-MM-DD
    new Date('2018-9-28')


    插入(文档)

    db.COLLECTION_NAME.insert(document)

    db.集合名称.insert(文档)
    文档的数据结构和JSON基本一样。
    所有存储在集合中的数据都是BSON格式。
    BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。


    更新

    save()

    -- 如果文档的_id已经存在则修改,如果文档的_id不存在则添加
    db.集合名称.save(document)

    update()

    • 语法

    db.集合名称.update(
    <query>,
    <update>,
    {
    upsert: <boolean>,
    multi: <boolean>,
    writeConcern: <document>
    }
    )

    • 参数说明:

      • query : update的查询条件,类似sql update查询内where后面的。
      • update : update的对象和一些更新的操作符(如,inc...)等,也可以理解为sql update查询内set后面的
      • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
      • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
      • writeConcern :可选,抛出异常的级别。

    删除

    • 语法
    db.集合名称.remove(<query>,{justOne: <boolean>})
    • 参数query:可选,删除的⽂档的条件
    • 参数justOne:可选, 如果设为true或1, 则只删除⼀条, 默认false, 表示删除多条
    • 注意: 默认是删除多条

    查询

    find()查询

    db.集合名称.find({条件⽂档})

    findOne()

    查询,只返回第⼀个
    db.集合名称.findOne({条件⽂档})

    pretty()

    将结果格式化
    db.集合名称.find({条件⽂档}).pretty()
    比较、范围运算符

    等于

    默认是等于判断, 没有运算符

    小于

    $lt (less than)

    小于等于

    $lte (less than equal)

    大于

    $gt (greater than)

    大于等于

    $gte (greater than equal)

    不等于

    $ne (not equal)

    在范围内

    $in

    不在范围内

    $nin

    逻辑运算符

    逻辑与 and

    在json中写多个条件即可

    逻辑或 or

    使用$or ,值为数组,数组中每个元素为json

    支持正则表达式

    • 使用//或者$regex
      -- 以'后'字开头
      -- 第一种
      db.wzry.find({name:/^后/})
      -- 第二种
      db.wzry.find({name:{$regex:'^后'}})

    相关文章

      网友评论

          本文标题:数据库(26)mongodb(上)

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