学习笔记DB2:MongoDB文档数据库

分类:IT>数据库

1、NOSQL的特点是什么?

(1)打破了传统关系模式的限制,提供更为灵活的非关系型的数据存储和管理

2、NOSQL数据库的分类?

(1)以Hbase为代表的列存储数据库

(2)以Redis为代表的键值存储数据库

(3)以Neo4J为代表的图数据库

(4)以MongoDB为代表的文档数据库

3、MongoDB的特点是什么?

MongoDB是一个开源的高性能无模式文档型数据库

(1)面向文档(document-oriented):数据库中的每一条记录是一个文档对象,采用类JSON的文档格式,非常接近真实对象模型。

(2)无模式(Schema-less):每个文档都可以不同,没有严格的模式定义,灵活方便。

(3)高性能:拥有卓越的读写性能,并具有高可用副本集和可扩展分片集群技术,从先天上支持数据库的高扩展性和高伸缩性。

4、MongoDB的适用场景是什么?

(1)网站数据:MongoDB非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

(2)缓存:由于性能很高,MongoDB适合作为信息基础设施的持久化缓存层。

(3)高伸缩性的集群场景:适合由数台服务器组成的大规模数据存储。

(4)用于对象及JSON数据的存储:MongoDB的BSON数据格式非常适合文档格式化的存储和查询

5、MongoDB不适用场景有哪些?

(1)要求高度事务性的系统:例如银行的结算系统,采用传统关系型数据库更适合

(2)传统的商业智能应用:BI应用一般要求高度优化的特定查询方式,如上下钻取、切片等,采用数据仓库更适合。

6、MongoDB的使用

(1)下载网站:https://www.mongodb.com/

(2)安装基本安装副本配置(replication)分片配置(sharding)

(3)第三方客户端工具Robomongo https://robomongo.org/

(4)MongoDB的简介

①MongoDB官方提供了各种不同语言版本的驱动程序和应用开发接口来使用MongoDB,包括C,C++,C#,Java,Node.js,Perl,PHP,Python,Motor,Ruby和Scala

②MongoDB官方还提供了原生的MongoDB Shell客户端,可以通过Shell进行MongoDB的各种操作

③文档由字段/值对构成,展示形式和JSON格式非常相似,底层存储为二进制的BSON格式

④字段的值可以是基本数据类型(字符串、整数、浮点数、日期等)、整组、也可以是其他的文档或文档数组。

优点:

文档对象格式和某些编程语言(如Javascript)中的对象基本一致,不需要转换非常方便

嵌套的文档格式,避免了跨表join

(5)操作

①运行shell客户端:mongo.exe

通常在安装目录下的bin目录下;假设已经通过mongod.exe打开MongoDB服务器

②查询当前服务器上所有数据库:show dbs

③切换shell操作的当前数据库:use

④查看当前数据库中的表:show collections

⑤查询restaurants集合中的所有文档,使用:db.collection find()

⑥创建集合db.createCollection

⑦创建数据库

MongoDB没有提供在shell中创建数据库的命令,可以简单使用use ,然后通过db.createCollection向数据库中添加集合。只有把集合添加到新数据库中,通过use方式创建的数据库才会真正保存。

(6)MongoDB的CRUD基本数据操作

CRUD create read update delete

①插入(create)

等价插入格式:

自动创建了主键列_id,类型为ObjectId

ObjectId存储长度为12个字节,显示为24位的十六进制字符串

其中:4字节时间戳,显示文档创建时间3字节表示运行MongoDB的机器的唯一标识符2字节表示生成此_id的进程,3字节,表示自增计数器

这样在一定程度上解决了分布式环境下高并发情况主键唯一性的问题

②查询(read)

Db.collection.find()

查询操作符$in

Name:{

$in:[“窦志成”,”文继荣”]

}

})

等价于select * from teachers where name in (‘窦志成’,’文继荣’)

AND和OR条件

Db.teachers.find({

Area:{$in:[“大数据”,”信息检索”]},

Age:{$gt:30}

})

Db.teachers.find({

$or:[,}]

})

③修改(update)

Db.collection.update()

等价操作

Db.teachers.update(

{“name”:”杜小勇”}, //筛选条件

{$set:{ //更新操作

Title:”理工处长”,school:”school of information”}

},

{ //更新选项

“multi”: false, //仅更新匹配的第一个文档

}

);

④删除(delete)

Db.collection.remove()

等价形式

7、MONGODB的聚合框架中支持哪些基本操作?

MongoDB提供了一个通用的聚合(aggregation)框架来负责通用的数据处理流程,包括分组汇总统计、排序等。聚合框架可以用来实现类似于SQL的“Group by”的功能,但是它的功能不限于此。

聚合框架中支持的基本操作:

$project:修改输入的文档结构。可以用来重命名

$match:用于过滤数据,只输出符合查询条件的文档

$limit:用来聚合返回的文档数

$skip:在聚合过程中跳过指定数量的文档,并返回余下的文档

$unwind:将文档中的某一个数组类型字段拆成多条,每条包含数组中的一个值

$group:将集合中的文档分组,可用于统计结果

$sort:将输入文档排序后输出

$geoNear:输出接近某一地理位置的有序文档

SQL与MongoDB的命令关系

Where/group by/having/select/orderby/limit/sum()/count()

$match/$group/$match/$project/$sort/$limit/$sum/$sum:1

参考资料:

MOOC中国人民大学《数据库系统概论(新技术篇)》

第15讲MongoDB文档数据库窦志成

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180928G13IIL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券