Mongo 初识
来源:互联网 发布:在淘宝买片怎么搜 编辑:程序博客网 时间:2024/05/22 14:35
NoSQL 简介:
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。
NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
关系型数据库遵循ACID规则:原子性Atomicity,一致性Consistency, 独立性Isolation,持久性Durability
非关系型数据库:最终一致性原则,而非ACID属性。
CAP定理:
在计算机科学中,CAP定理(布鲁尔定理)指出对于一个分布式计算系统来说,不可能同时满足一下三点:
一致性Consistency:所有节点在同一时间具有相同的数据
可用性Availability:保证每个请求不管成功或者失败都有响应
分离可容忍Partition tolerance:系统中任意信息的丢失或者失败不会影响系统的继续运行
CAP理论的核心:一个分布式系统不可能同时很好的满足一致性,可用性 和 分区容错性 这三个需求,最多只能同时煎好的满足其中两个。
因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
CA - 单点集群,满足一致性/可用性的系统,通常在可扩展性上不强大。
CP - 满足一致性/分区容忍性的系统,通常性能不是特别高。
AP - 满足可用性/分区容忍性的系统,通常可能对一致性要求低一些。
常用操作:
show dbs 查看数据库
use XXX 进入数据库
db 查看当前数据库
show collections 查看数据库当前集合
db.collectionName.find(XXX)查询集合
db.collectionName.findOne(XXX)查询单个
db.collectionName.insert({XXX}) 插入
db.colectionName.save({XXX})ID相同会更新,不同插入
.skip(Number) 跳过查询数量
.limit(NUMBER)显示限制输出行
.pretty() 格式化输出(没看出来有什么效果)
{key:{$xx:value}}相当于where条件
$lt < ; $lte <= ; $gt > ; $gte >= ; $ne !=
{key1:val1,key2:val2}相当于 key1=val1 and key2=val2
$or:[{ key:val},{ key:val}]mongo中or的用法
db.collectionName.update({},{}) 第一个参数是选择条件,第二个是修改值{$set:{}}不加$set:直接替换
更新多个需要加第三个参数:{multi:true}
db.collectionName.remove()MongoDB的 remove() 方法用于从集合中删除文档。remove() 方法接受两个参数。
第一个参数 :(可选)删除标准,根据文件将被删除。
第二个参数 : (可选)如果设置为true或1,然后只删除一个文件。
db.collectionName.find({},{'key':1})
选择显示部分字段,标1的显示,默认"_id"是显示的
.sort() 需要使用sort()方法。 sort() 方法接受一个文档,其中包含的字段列表连同他们的排序顺序。要指定排序顺序1和-1。
1用于升序排列,而-1用于降序。
db.collectionName.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
$sum 总结从集合中的所有文件所定义的值.db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 从所有文档集合中所有给定值计算的平均.db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 获取集合中的所有文件中的相应值最小.db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 获取集合中的所有文件中的相应值的最大.db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 值插入到一个数组生成文档中.db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 值插入到一个数组中所得到的文档,但不会创建重复. db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根据分组从源文档中获取的第一个文档。通常情况下,这才有意义,连同以前的一些应用 “$sort”-stage.db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据分组从源文档中获取最后的文档。通常,这才有意义,连同以前的一些应用 “$sort”-stage.db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])
管道概念:
在UNIX 命令 shell 管道是指一些输入和输出作为输入下一个命令等执行操作的可能性。 MongoDB 聚合框架也支持同样的概念。有一组可能的阶段,每个这些的一组文档作为输入,并产生一个结果集的文件(或最终生成的JSON文档在管道末端)。然后又再次被用来为下一阶段等。
可能的阶段聚合框架如下:
$project: 用于选择从收集的一些具体字段。
$match: 这是一个滤波操作,因此可以减少量,作为下一阶段的输入给定的文档。
$group: 如上所讨论的,这不实际的聚合。
$sort: 文件排序。
$skip: 与此有可能向前跳过的文件列表中的一个给定的的文档数量。
$limit: 这限制了的文档数量看一下由从当前位置开始的给定数
$unwind: 这是用来平仓文档的中使用数组。使用数组时,数据是一种pre-joinded,再次有个别文件,此操作将被取消。因此,这个阶段,数量会增加文件的下一阶段。
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。
NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
关系型数据库遵循ACID规则:原子性Atomicity,一致性Consistency, 独立性Isolation,持久性Durability
非关系型数据库:最终一致性原则,而非ACID属性。
CAP定理:
在计算机科学中,CAP定理(布鲁尔定理)指出对于一个分布式计算系统来说,不可能同时满足一下三点:
一致性Consistency:所有节点在同一时间具有相同的数据
可用性Availability:保证每个请求不管成功或者失败都有响应
分离可容忍Partition tolerance:系统中任意信息的丢失或者失败不会影响系统的继续运行
CAP理论的核心:一个分布式系统不可能同时很好的满足一致性,可用性 和 分区容错性 这三个需求,最多只能同时煎好的满足其中两个。
因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
CA - 单点集群,满足一致性/可用性的系统,通常在可扩展性上不强大。
CP - 满足一致性/分区容忍性的系统,通常性能不是特别高。
AP - 满足可用性/分区容忍性的系统,通常可能对一致性要求低一些。
常用操作:
show dbs 查看数据库
use XXX 进入数据库
db 查看当前数据库
show collections 查看数据库当前集合
db.collectionName.find(XXX)查询集合
db.collectionName.findOne(XXX)查询单个
db.collectionName.insert({XXX}) 插入
db.colectionName.save({XXX})ID相同会更新,不同插入
.skip(Number) 跳过查询数量
.limit(NUMBER)显示限制输出行
.pretty() 格式化输出(没看出来有什么效果)
{key:{$xx:value}}相当于where条件
$lt < ; $lte <= ; $gt > ; $gte >= ; $ne !=
{key1:val1,key2:val2}相当于 key1=val1 and key2=val2
$or:[{ key:val},{ key:val}]mongo中or的用法
db.collectionName.update({},{}) 第一个参数是选择条件,第二个是修改值{$set:{}}不加$set:直接替换
更新多个需要加第三个参数:{multi:true}
db.collectionName.remove()MongoDB的 remove() 方法用于从集合中删除文档。remove() 方法接受两个参数。
第一个参数 :(可选)删除标准,根据文件将被删除。
第二个参数 : (可选)如果设置为true或1,然后只删除一个文件。
db.collectionName.find({},{'key':1})
选择显示部分字段,标1的显示,默认"_id"是显示的
.sort() 需要使用sort()方法。 sort() 方法接受一个文档,其中包含的字段列表连同他们的排序顺序。要指定排序顺序1和-1。
1用于升序排列,而-1用于降序。
db.collectionName.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
$sum 总结从集合中的所有文件所定义的值.db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 从所有文档集合中所有给定值计算的平均.db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 获取集合中的所有文件中的相应值最小.db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 获取集合中的所有文件中的相应值的最大.db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 值插入到一个数组生成文档中.db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 值插入到一个数组中所得到的文档,但不会创建重复. db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根据分组从源文档中获取的第一个文档。通常情况下,这才有意义,连同以前的一些应用 “$sort”-stage.db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据分组从源文档中获取最后的文档。通常,这才有意义,连同以前的一些应用 “$sort”-stage.db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])
管道概念:
在UNIX 命令 shell 管道是指一些输入和输出作为输入下一个命令等执行操作的可能性。 MongoDB 聚合框架也支持同样的概念。有一组可能的阶段,每个这些的一组文档作为输入,并产生一个结果集的文件(或最终生成的JSON文档在管道末端)。然后又再次被用来为下一阶段等。
可能的阶段聚合框架如下:
$project: 用于选择从收集的一些具体字段。
$match: 这是一个滤波操作,因此可以减少量,作为下一阶段的输入给定的文档。
$group: 如上所讨论的,这不实际的聚合。
$sort: 文件排序。
$skip: 与此有可能向前跳过的文件列表中的一个给定的的文档数量。
$limit: 这限制了的文档数量看一下由从当前位置开始的给定数
$unwind: 这是用来平仓文档的中使用数组。使用数组时,数据是一种pre-joinded,再次有个别文件,此操作将被取消。因此,这个阶段,数量会增加文件的下一阶段。
0 0
- Mongo 初识
- 初识mongo
- 二、Mongo命令初识
- Mongo DB 初识
- MONGO
- mongo
- mongo
- mongo
- mongo
- mongo
- mongo
- mongo 管理工具 rock mongo
- 初识
- 初识
- 初识
- Mongo登录
- mongo使用
- mongo命令
- 【实战】使用Java结合Sendmail邮件服务器+Quartz开源框架定时发邮件
- analyse K9F2G08X0A nand flash
- 蓝桥杯 算法提高 9-2 文本加密
- android时间对话框TimePickerDialog介绍
- mac系统中使用tree 命令展示目录树结构
- Mongo 初识
- Spark入门实战系列--6.SparkSQL(上)--SparkSQL简介
- leetcode 51 N-Queens 回溯 万能结构
- 安卓开源项目周报0215
- Laravel 常用命令合集
- C#中图片与BASE64码互相转换
- Nginx自建CA配置https服务器
- 半年总结——在路上
- c# 图片按比例缩放