mongodb数据建模分析、数据类型、增删数据库和集合操作

上一篇我们讨论了mongodb在Windows和Linux上的安装配置教程,如果你已经配置好mongodb了,那就可以正式使用mongodb了。但是学习mongodb究竟是要学什么内容呢?就是增删改查了,这就是程序员每天的工作了,增删改查增删改查增删改查……下班还别不忘记删库了!
下面先介绍mongodb的数据建模分析,看看和RDBMS如MySQL有什么区别,然后了解mongodb支持的数据类型,后面是增删数据库和集合的操作,这些操作都是很简单的,并不会常用,对于文档的增删改查才是采用的,下一节会进行讨论。
顺便说下mongodb中的数据库和RDBMS如mysql的是一样的,表结构相当于mongodb的集合collection,表中的一条记录相当于mongodb的文档document。
一、mongodb数据建模分析MongoDB中的数据有一个灵活的模式,同一集合中的文档它们不需要具有相同的字段集或结构,一个集合s的文档中的公共字段可能包含不同类型的数据。因为mongodb的客户端里面有JS引擎,意思就是说在这上面编写JS程序都没问题了。
1、在MongoDB中进行数据建模的一些注意事项
(1)根据用户需求设计模式。
(2)如果要同时使用一个对象,请将它们组合成一个文档,否则将它们分开(但是要确保不需要连接)。
(3)为最频繁的用例优化你的模式。
(4)在模式中执行复杂的聚合。
2、数据建模的例子
假设一个客户需要为他的博客/网站设计一个数据库,并查看RDBMS和MongoDB模式设计之间的区别,网站有以下要求。

  • 每个帖子都有独特的标题、描述和url。
  • 每个帖子可以有一个或多个标签。
  • 每一个帖子都有它的发布者的名字和总喜欢数。
  • 每个帖子都有用户的评论,以及他们的姓名、信息、数据时间和喜好。
  • 每个帖子可以有0条或多条评论。
在RDBMS模式中,上述需求的设计将至少有三个表。
mongodb数据建模分析、数据类型、增删数据库和集合操作

文章图片
而在MongoDB模式中,数据建模设计将有一个帖子集合和以下结构:
{ _id: POST_ID title: TITLE_OF_POST, description: POST_DESCRIPTION, by: POST_BY, url: URL_OF_POST, tags: [TAG1, TAG2, TAG3], likes: TOTAL_LIKES, comments: [ { user:'COMMENT_BY', message: TEXT, dateCreated: DATE_TIME, like: LIKES }, { user:'COMMENT_BY', message: TEXT, dateCreated: DATE_TIME, like: LIKES } ] }

如上所示RDBMS显示数据时需要连接三个表,在MongoDB中只显示一个集合中的数据。
二、mongodb支持的数据类型
mongodb数据建模分析、数据类型、增删数据库和集合操作

文章图片
MongoDB支持多种数据类型,其中一些如下解释:
  • 字符串——也就是一般使用的字符串啦。
  • 整数—整数可以是32位,也可以是64位,这取决于你所在的服务器。
  • 布尔-这个类型用于存储布尔值(真/假)。
  • Double浮点 – 这个类型用于存储浮点值。
  • 最小/最大键值——这种类型用于比较最低和最高BSON元素的值。
  • 数组——这种类型用于将数组、列表或多个值存储到一个键中。
  • 时间戳?ctimestamp,这对于记录文档的修改或添加非常方便。
  • 对象——这种数据类型用于嵌入的文档。
  • Null——这个类型用于存储空值。
  • 符号——它通常只用于使用特定符号类型的语言。
  • 时间日期Date—此数据类型用于以UNIX时间格式存储当前日期或时间。
  • Object ID——也就是用来存储文档的ID了,ID是怎么样的?不用担心啦,mongodb会自动生成。
  • 二进制数据——这种数据类型用于存储二进制数据。
  • 代码——这种数据类型用于将JavaScript代码存储到文档中。
  • 正则表达式——这种数据类型用于存储正则表达式。
三、创建和删除数据库database1、创建数据库
MongoDB使用use db_name创建数据库,如果db_name数据库不存在怎么办?等于新建了一个咯,否则就使用现有的数据库了,新创建的数据库不做任何操作离开后会被删除。
use sun命令创建一个sun数据库,show dbs查看所有数据库,如下新创建了一个数据库:
mongodb数据建模分析、数据类型、增删数据库和集合操作

文章图片
【mongodb数据建模分析、数据类型、增删数据库和集合操作】如上图中show dbs没有显示sun,这是因为sun中还没有数据,需要添加数据才会显示sun的信息。
2、删除数据库
db.dropDataBase()为删库命令,这命令忘记也好,太记得会出事!mongodb的多数命令都是类似调用函数的形式。
mongodb数据建模分析、数据类型、增删数据库和集合操作

文章图片
四、创建和删除集合collection1、创建集合
db.createCollection(集合名称,op配置对象)就是用来删除集合的了 op是一个对象,用于指定集合的配置。
op参数是可选的,因此可以只指定集合的名称,以下是你可以使用的选项列表:
属性 类型 说明
capped Boolean (可选)等于true时为capped集合,它是一个固定大小的集合,当它达到最大大小时自动覆盖其最老的条目。如果指定为true,还需要指定size参数。
autoIndexId Boolean (可选)如果为true,则自动在_id字段上创建索引,默认值为false。
size number (可选) capped集合最大字节数,capped为true的时候需要同时指定size。
max number (可选)指定上限集合中允许的最大文档数量。
那么在创建文档的时候,以上选项是如何发挥作用的呢? MongoDB先去capped集合查看一下size字段,然后再跑去看看max字段。下面是创建集合的演示:
mongodb数据建模分析、数据类型、增删数据库和集合操作

文章图片
不过呢这个命令有点多余了,要创建一个集合user,只需要使用db.user.inser({})直接插入数据就够啦,mongodb会自动为你创建一个user的集合。
2、删除集合
在mongodb中删除一个集合使用命令db.collection.drop(),如下:
mongodb数据建模分析、数据类型、增删数据库和集合操作

文章图片

    推荐阅读