上一篇我们讨论了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条或多条评论。
文章图片
而在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支持多种数据类型,其中一些如下解释:
- 字符串——也就是一般使用的字符串啦。
- 整数—整数可以是32位,也可以是64位,这取决于你所在的服务器。
- 布尔-这个类型用于存储布尔值(真/假)。
- Double浮点 – 这个类型用于存储浮点值。
- 最小/最大键值——这种类型用于比较最低和最高BSON元素的值。
- 数组——这种类型用于将数组、列表或多个值存储到一个键中。
- 时间戳?ctimestamp,这对于记录文档的修改或添加非常方便。
- 对象——这种数据类型用于嵌入的文档。
- Null——这个类型用于存储空值。
- 符号——它通常只用于使用特定符号类型的语言。
- 时间日期Date—此数据类型用于以UNIX时间格式存储当前日期或时间。
- Object ID——也就是用来存储文档的ID了,ID是怎么样的?不用担心啦,mongodb会自动生成。
- 二进制数据——这种数据类型用于存储二进制数据。
- 代码——这种数据类型用于将JavaScript代码存储到文档中。
- 正则表达式——这种数据类型用于存储正则表达式。
MongoDB使用use db_name创建数据库,如果db_name数据库不存在怎么办?等于新建了一个咯,否则就使用现有的数据库了,新创建的数据库不做任何操作离开后会被删除。
use sun命令创建一个sun数据库,show dbs查看所有数据库,如下新创建了一个数据库:
文章图片
【mongodb数据建模分析、数据类型、增删数据库和集合操作】如上图中show dbs没有显示sun,这是因为sun中还没有数据,需要添加数据才会显示sun的信息。
2、删除数据库
db.dropDataBase()为删库命令,这命令忘记也好,太记得会出事!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 | (可选)指定上限集合中允许的最大文档数量。 |
文章图片
不过呢这个命令有点多余了,要创建一个集合user,只需要使用db.user.inser({})直接插入数据就够啦,mongodb会自动为你创建一个user的集合。
2、删除集合
在mongodb中删除一个集合使用命令db.collection.drop(),如下:
文章图片
推荐阅读
- 超简单!mongodb文档(document)的增删改查命令行操作和图解
- mongodb环境部署(下载、安装和配置全解(Windows和Linux))
- 使用C++实现trie树(单词查找树,字典树)
- Python元组tuple使用详解
- Python数据结构之列表list用法和原理全解
- Python字符串String使用和操作完全解读
- JavaScript使用回溯法解决整数分解问题
- python数据结构之set的用法详解
- 自适应安全设备(ASA)上的端口地址转换(PAT)详细指南