mongodb高级应用
一、 高级查询
- 查询操作符
- 条件操作符:db.collection.find({“field”:{$gt/$lt/$gte/$lte/$eq/$ne:value}});
- 匹配所有:db.collection.find({age:{$all:[6,8]}});//字段的数组中符合全部条件才行。
- 判断字段存在:db.colletion.find({field:{$exists:true}})//还可用于remove等。
- Null值的处理:db.collection.find({field:{“$in”:null,”$exists:true}});
- 取模运算:db.colletion.find({field:{$mod:[10,1]}});
- $ne不等于
- $in包括
- $nin不包括 //$ini和$ne的区别就是ini用于数组检测
- $size匹配数组元素个数
- Count查询记录条数:db.field.find().count();
- Skip显示返回记录的起点:db.students.find().skip(4),跳过前面4条
- Sort排序
- Distinct去重:db.collection.distinct(“field”);查看某字段值的种类。
- Group分组统计
- 查询语法
- 数组内容的查询:通过查询数组的一个属性,可以查出整条文档。
- 内嵌文档的查询:查询文档中field字段中name属性可以find({“field.name”:*});
- 正则表达式匹配查询
- $where查询:命令中不包括where关键字
- 联合查询
- 步骤
1 u=db.user.findOne({author:“ken”});
2 for(var p=db.posting.find({author:u.author});p.hasNext();) {printjson(p.next().title)};
3 上面的解析:先通过名称找出文档,再通过获得的文档中的名称打印title
- 游标和存储过程
- 游标:结果缓存再读取
- 存储过程
1 声明:db.system.js.save({_id: addNumbers value:funtion(x,y){return x+y}});
2 通过id调用:db.eval(‘addNumbers(3,4)’);
3 声明后直接调用:db.eval(function(){return 3+3});
二、 高级更新
- 数据更新命令
- Update:db.collection.update(criteria,objNew,upsert,multi)
1 Criteria:此处填写查询条件
2 objNew:用$inc的操作
3 upsert:逻辑操作决定在更新操作的时候,没有符合条件的时候是否插入。
4 multi:按照条件查找的多多条的时候,决定多条记录是否同时更新。
- save:如果集合里面有同id的文档,将被覆盖,如果没有,就添加。
- 数据更新操作符
- $inc:{$inc:{field:value}} //对某个字段的数值作品加法
- $set:{$set:{field:value}} //直接修改某个字段的值
- $unset:{$unset:{field:1}} //删除字段
- $push:{$push:{field:value}} //针对数组类型添加值
- $pushAll:{$pushAll:{field:[value1,value2]}} //针对数组类型添加多个值
- $addToSet:{$addToSet:{field:[value1,value2]}} //针对数组类型添加数组
- $pop:{$pop:{field:-1}} //删除数组内的一个值
- $pull:{pull:{field:_value}} //从数组中删除一个等于value的值
- $pullAll:{pullAll:{field:[value1,value2]}} //可以一次删除数组内多个值
- $rename:{$rename:{old_name:new_name}} //字段重命名
- 高级特性
- Capped Collection
1 先预定空间的大小,用完之后就老化溢出。
2 发挥最大的性能,在记录日志不应该创建索引。
3 发挥最大的性能,读比写多的时候不要在上面创建索引。
4 Ps:log speed 是快,data speed 慢。
- GridFS规范
1 海量存储
- 因为BSON的大小限制,大文件会分开。
- Files(包括元数据对象),chunks(二进制块)
2 命令行工具
- Mongofiles put 上传
- Mongofiles get 下载
- MapReduce编程模型
1 Map进行分组
2 Reduce聚合计算
3 Result获取结果
4 Finalize格式化输出
5 Options定制输出
mongodb高级应用的更多相关文章
- MongoDB高级查询用法大全
转载 http://blog.163.com/lgh_2002/blog/static/440175262012052116455/ 详见官方的手册: http://www.mongodb.org/d ...
- DataBase MongoDB高级知识-易使用
MongoDB高级知识-易使用 mongodb是一个面向文档的数据库,而不是关系型数据库.不采用关系模型主要是为了获取更好的扩展性.当然还有其他的一些好处. 与关系型数据库相比,面向文档的数据库不再有 ...
- DataBase MongoDB高级知识-易扩展
MongoDB高级知识-易扩展 应用程序数据集的大小正在以不可思议的速度增长.随着可用宽带的增长和存储器价格的下跌,即使是一个小规模的应用程序,需要存储的数据也可能大的惊人,甚至超出了很多数据库的处理 ...
- DataBase MongoDB高级知识
MongoDB高级知识 一.mongodb适合场景: 1.读写分离:MongoDB服务采用三节点副本集的高可用架构,三个数据节点位于不同的物理服务器上,自动同步数据.Primary和Secondary ...
- mongoDB高级查询$type4array使用解析
今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...
- 【mongoDB高级篇③】综合实战(1): 分析国家地震数据
数据准备 下载国家地震数据 http://data.earthquake.cn/data/ 通过navicat导入到数据库,方便和mysql语句做对比 shard分片集群配置 # step 1 mkd ...
- MongoDB高级知识-易使用
MongoDB高级知识-易使用 mongodb是一个面向文档的数据库,而不是关系型数据库.不采用关系模型主要是为了获取更好的扩展性.当然还有其他的一些好处. 与关系型数据库相比,面向文档的数据库不再有 ...
- MongoDB高级知识-易扩展
MongoDB高级知识-易扩展 应用程序数据集的大小正在以不可思议的速度增长.随着可用宽带的增长和存储器价格的下跌,即使是一个小规模的应用程序,需要存储的数据也可能大的惊人,甚至超出了很多数据库的处理 ...
- MongoDB高级知识
MongoDB高级知识 一.mongodb适合场景: 1.读写分离:MongoDB服务采用三节点副本集的高可用架构,三个数据节点位于不同的物理服务器上,自动同步数据.Primary和Secondary ...
- mongoDB 高级查询语法
http://www.cnblogs.com/ITAres/articles/2084794.html本文参考自官方的手册:http://www.mongodb.org/display/DOCS/Ad ...
随机推荐
- try...catch..finally
try..catch..finally try{ 代码块1 }catch(Exception e){ 代码块2 }finally{ 代码块3 } catch是抓取代码块1中的异常 代码块2是出异常后的 ...
- 开发node桌面级应用工具:apk转化epub
随着苹果ibooks对国内的开放,最近接了个麻烦的需求: 把现有的APK转化支持苹果ibooks电子书的epub格式 apk,基本都知道就是安卓的应用程序 epub,是ibooks支持的电子书格式 ( ...
- javascript学习之BOM
BOM是browser object model的缩写,简称浏览器对象模型.先看看下面这张图 window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象. ...
- 了解HTML表单之form元素
前面的话 表单是网页与用户的交互工具,由一个<form>元素作为容器构成,封装其他任何数量的表单控件,还有其他任何<body>元素里可用的标签 表单能够包含<input& ...
- Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考
操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...
- C#中的委托解析
谈及到C#的基本特性,“委托”是不得不去了解和深入分析的一个特性.对于大多数刚入门的程序员谈到“委托”时,都会想到“将方法作为方法的参数进行传递”,很多时候都只是知道简单的定义,主要是因为“委托”在理 ...
- MySQL的数据模型
MySQL的数据类型主要分为三大类: 数值型(Numeric Type) 日期与时间型(Date and Time Type) 字符串类型(String Type) 1. 数值 MySQL的数值类型按 ...
- Hive技术架构
一.Hive概念 Facebook为了解决海量日志数据的分析而开发了Hive,Hive是一种用SQL语句来读写.管理存储在分布式存储设备上的大数据集的数据仓库框架. 1. 数据是存储在HDFS上的,H ...
- enumerate用法总结-Python 3
enumerate()说明 enumerate()是python的内置函数 enumerate在字典上是枚举.列举的意思 对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enum ...
- 利用Spring AOP机制拦截方法一例
直接上代码: @Aspect // for aop @Component // for auto scan @Order(0) // execute before @Transactional pub ...