MongoDB简述及其特点

MongoDB 简述

官方下载地址:https://www.mongodb.com/download-center#community

MongoDB:是一个开源、高性能、无模式的文档型数据库。它是一个由C++语言编写的基于分布式文件存储的数据库。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB:是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。

NoSQL:指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。它们一般用于超大规模的数据存储,这些存储的数据一般不需要固定的模式,无需多余操作就可以横向扩展。

MongoDB:支持的数据结构非常松散,是一种类似于 JSON 的 格式叫BSON

BSON(Binary Serialized Document Format):BSON文档(对象)由一个有序的元素列表构成。每个元素由一个字段名、一个类型和一个值组成。字段名为字符串。类型包括:
string
integer(32或64位)
double(64位IEEE 754浮点数)
decimal128(128位IEEE 754-2008浮点数;Binary Integer Decimal变体),适合作为任意精度为34个十进制数字的数字载体,最大值近似10
date(整数,自UNIX时间的毫秒数)
byte array(二进制数组)
布尔(true或false)
null
BSON对象
BSON数组
JavaScript代码
MD5二进制数据
正则表达式(Perl兼容的正则表达式,即PCRE,版本8.41,含UTF-8支持;与Python不完全兼容)
BSON的类型名义上是JSON类型的一个超集(JSON没有date或字节数组类型),但一个例外是没有像JSON那样的通用“数字”(number)类型。

MongoDB:中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。

特点

1.MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
2.你可以在MongoDB记录中设置任何属性的索引 (如:FirstName=“Sameer”,Address=“8 Gandhi Road”)来实现更快的排序。
3.你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
4.如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
5.Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
6.MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
7.Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
8.Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
9.Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
10.GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
11.MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
12.MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
13.MongoDB安装简单。

理解mongodb和关系型数据库的对应关系

MongoDB简述及其特点MongoDB通过嵌入式文档来替代多表连接

mongodb以文档为存储单位,不会固定field长度和field类型,当field不存在时会自动创建,展示图如下:
MongoDB简述及其特点
操作MongoDB数据库集合时,当集合不存在,MongoDB会自动创建集合。

MongoDB和关系型数据库的存储对应关系

MongoDB简述及其特点

#使用注意事项
1.文档中的键/值对是有序的。
2.文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
3.MongoDB区分类型和大小写。
4.MongoDB的文档不能有重复的键。
5.文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
6.键不能含有\0 (空字符)。这个字符用来表示键的结尾。
7. .和$有特别的意义,只有在特定环境下才能使用。

8.以下划线"_“开头的键是保留的(不是严格要求的)。
9.集合名不能是空字符串”"。
10.集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
11.集合名不能以"system."开头,这是为系统集合保留的前缀。
12.用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些
13.系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

##MongoDB支持的常用数据结构
MongoDB简述及其特点

MongoDB 中存储的文档必须有一个 _id 键。这个键的值可以是任何类型的,默认是个 ObjectId 对象,当我们不设置_id时,MongoDB会自动生成一个ObjectId。
ObjectId 类似唯一主键,可以很快的去生成和排序,包含 12 bytes,含义是:
1.前 4 个字节表示创建 unix 时间戳,格林尼治时间 UTC 时间,比北京时间晚了 8 个小时
2.接下来的 3 个字节是机器标识码
3.紧接的两个字节由进程 id 组成 PID
4.最后三个字节是随机数