简介
首先介绍一下分布式文件存储系统:
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。
MongDB是非关系型的数据库,就是把数据直接放进一个大仓库,不标号、不连线,单纯的堆起来。由于如今产生的数据非常的庞大,传统的关系型数据库已经不能够完全满足业务需求,所以出现了noSQL(非关系型的数据库)。由于关系型数据库存储对数据之间存在高度的关联,在数据量达到上万亿比特时,关系型数据库所特有的约束和关联就会成为性能瓶颈。非关系型数据库采用了另一种思维方式,即不考虑数据之间千丝万缕的联系,存储也不需要固定的模式,这样无需多余的操作就能成倍地扩展数据量。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富、最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
基础知识点
- 文档
文档是 MongoDB 的核心,类似于 SQLite 数据库(关系数据库)中的每一行数据。多个键及其关联的值放在一起就是文档。在 Mongodb 中使用一种类 json 的 bson 存储数据,bson 数据可以理解为在 json 的基础上添加了一些 json 中没有的数据类型。 文档有两种逻辑联系:嵌入式(把一个文档嵌入到另一个),引用式(把两个文档分开,通过引用文档的_id字段来建立联系)。
- 集合
集合就是一组文档的组合,相当于关系数据库中的表。
命令集合
- show dbs 查看所有数据库的列表
- db 查看单签数据库对象或者集合
- use 连接到指定数据库(没有就新建)
- db.system.namespaces 列出所有名字空间
- db.system.indexs 列出所有索引
- db.system.profile 列出数据库概要信息
- db.system.users 列出访问数据库的用户
- db.system.sources 列出服务器信息
- db,dropDatabase() 销毁数据库
- db.createCollection("xxxx") 创建一个集合(capped固定大小集合与size搭配,autoIndexId是否自动创建索引,max最大文档数)
- show collections 查看创建的集合
- db.xxxx.drop() 删除xxxx集合
- db.xxxx.insert() 插入数据(不能插入一条已经存在的数据)
- db.xxxx.save() 插入数据(可以插入一条存在的记录,结果是更新原纪录)
- db.xxx.find() 返回xxx集合中的所有文档(当传入多个键值对时,会自动将他作为AND查询处理)
- db.xxx.find().pretty() 使上一条返回的结果更美观
- db.xxx.find(){ $or : [ {....} {....} ] } or查询
- {$gt:10} 表示大于10 gt:大于 lt 小于 gte 大于等于 lte小于等于 ne 不等于
- MongoDB的模糊查询可以用正则匹配的方式实现
- db.xxx.update({查询条件}{更新的信息}) 更新已经存在的文档
- db.xxx.remove({查询条件}) 删除文档
- $type:x 条件操作符,用于选定文档记录是x类型
- db.xxxx.find().limit(1) 读取指定数量的记录,默认是排在最前面的那一条
- db.xxxx.find().skip(1) 读取时跳过指定数量的数据记录
- db.xxxx.find().sort({"xxx":1}) 查找结果排序,1升序,-1降序
- db.xxxx.createIndex(keys,options) 创建索引,keys为要穿件的索引字段,1升序,-1降序
- db.xxxx.aggregate() 聚合(类似于sql中的count)
1.$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。 2.$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。 3.$limit:用来限制MongoDB聚合管道返回的文档数。 4.$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。 5.$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。 6.$group:将集合中的文档分组,可用于统计结果。 7. $sort:将输入文档排序后输出。 8.$geoNear:输出接近某一地理位置的有序文档。 9.$sum 计算和 10.$avg 平均值 11.$min 最小值 12.$max 最大值 13.$push 在结果文档中插入值到一个数组中 14.$addToSet 在结果文档中插入值到一个数组中,但不创建副本 15.$first 根据资源文档的排序获取第一个文档数据 16.$last 跟局资源文档的排序获取最后一个文档数据