Study - MongoDB 浅析

MongoDB是一种用C++编写的文档数据库,采用JSON-like的文档结构,支持数组和嵌套对象,提供强大且富有表现力的查询语言,适用于各种现代用例如地理搜索、图搜索和文本搜索。MongoDB支持完整ACID交易,具备关系数据库的所有功能。

是什么?

  • 由C++语言编写的

  • 是一个文档数据库

    将数据存储为一个文档,数据结构由键值(key=>value)对组成

    MongoDB 文档类似于 JSON 对象

    字段值可以包含其他文档,数组及文档数组

MongoDB是一个NoSQL数据库系统:

  • 一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表
  • 而每个集合中可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由一组列标识的实体的集合对应于关系数据库表中的行

特点

  • 丰富的JSON文档
    • 处理数据的最自然和最有效的方式
    • 支持数组和嵌套对象作为值
    • 允许灵活和动态的模式
  • 强大的查询语言
    • 丰富且富有表现力的查询语言,允许您按任何字段进行筛选和排序,无论它在文档中的嵌套方式如何

    • 支持聚合和其他现代用例

      例如基于地理的搜索,图搜索和文本搜索

    • 查询本身就是JSON,因此很容易组合。不再需要连接字符串来动态生成SQL查询

  • 关系数据库的所有功能,以及更多…
    • 完整的ACID交易
    • 支持查询中的联接
    • 两种类型的关系而不是一种:引用和嵌入

概念

mongodb中基本的概念是文档集合数据库,下面我们进行简单介绍:

通过下图实例,我们也可以更直观的了解Mongo中的一些概念:

数据库
  • 一个mongodb中可以建立多个数据库
  • MongoDB的默认数据库为"db",该数据库存储在data目录中
  • MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中
  • 简单命令:
    • show dbs
      可以显示所有数据的列表
    • db
      可以显示当前数据库对象或集合
    • use ‘xxx’
      可以连接到一个指定的数据库
  • 命名
    • 数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串:
      • 不能是空字符串(" ")
      • 不得含有’ '(空格)、.、$、/、\和\0 (空字符)
      • 应全部小写
      • 最多64字节
    • 有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库:
      • admin:从权限的角度来看,这是root数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限
      • local: 这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合
      • config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息
文档
  • 文档是一组键值(key-value)对(即 BSON)。
  • MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点
  • 需要注意的是:
    • 文档中的键/值对是有序的
    • 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符
    • 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)
    • MongoDB区分类型和大小写
    • MongoDB的文档不能有重复的键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值