一架梯子,一头程序猿,仰望星空!
MongoDB入门教程 > 内容正文

MongoDB数据模型(基础概念)


使用MongoDB的第一步是先了解MongoDB的基础概念,还有数据模型(数据结构),知道数据是怎么存储的,实际上MongoDB跟MYSQL非常相似,基本上大家都会MYSQL学习MongoDB不会有什么难度。

MongoDB基础概念

数据库(database)

MongoDB数据库跟MYSQL的数据库是一个意思。

集合(collection)

MongoDB集合,指的是文档数据的集合,跟MYSQL的表是类似的概念。

文档(document)

MongoDB文档,类似MYSQL表里面的一行数据,一个文档就是一个JSON结构的数据,由多个字段组成,所以MongoDB的文档结构非常灵活。

字段(field)

MongoDB文档字段,跟MYSQL表字段是类似的概念,代表具体要存储的数据,每个字段都有自己的数据类型。

索引(index)

MongoDB索引跟MYSQL索引是类似的概念,目的都是为了提高查询效率。

聚合(Aggregation )

MongoDB聚合概念,跟MYSQL的Group by/Count/Sum聚合分析是类似的概念,就是用来做数据统计分析的。

MongoDB和MYSQL的概念对比

MYSQL MongoDB
数据库(database) 数据库(database)
表(table) 集合(collection)
行(row) 文档(document)
列(column) 文档字段(field))
索引(index) 索引(index)
聚合(例如:group by) 聚合(Aggregation )

基本上MongoDB的概念都能和MYSQL对上,所以说MongoDB是最像关系数据库的非关系数据(NoSQL)。

MongoDB文档数据

一个文档就是一个JSON结构的数据,由多个字段组成,每个字段都有自己的类型,使用MongoDB进行开发,基本上都是围绕文档结构怎么设计进行展开,这个跟MYSQL类似,使用MYSQL核心就是怎么设计表结构。

MongoDB 文档数据例子:

{
  "_id": "5cf0029caff5056591b0ce7d",
  "firstname": "Jane",
  "lastname": "Wu",
  "address": {
    "street": "1 Circle Rd",
    "city": "Los Angeles",
    "state": "CA",
    "zip": "90404"
  },
  "hobbies": ["surfing", "coding"]
}

可以是任意嵌套的JSON结构,这点MYSQL表结构是做不到的,_id字段是文档的主键,如果你不指定具体的值,MongoDB会随机生成一个唯一值。

MongoDB数据结构跟MYSQL 表最大的区别就是,MongoDB不需要提前定义好文档结构,对MongoDB来说,你只要直接把JSON数据直接塞到集合里面就行了,至于每一次写进去的JSON数据格式是不是一样无所谓,所以我们可以每次写入到MongoDB集合里面的数据格式都可以不一样(随便加字段、删字段)。

提示:虽然MongoDB的文档结构比较灵活,可以做到每一行数据格式都不一样,但是实际应用中,我们一个集合的数据结构通常都是统一的,否则的话,一个集合里面的数据,每一行数据格式都不一样,维护的人会吐血的,因为你不知道每次读出来的数据是什么格式的。