mongodb学习(五) 查询
1. 按条件查询:
db.users.find({"name":"MM1"})
2.find的第二个参数可以指定要返回的字段:这里1 表示要显示的字段,0 表示要剔除的字段
db.users.find({"name":"MM1"},{"name":1,"age":1})
db.users.find({"name":"MM1"},{"name":0})
3. 查询条件: "$lt","$lte","$gt","$gte": <,<=,>,>=
db.users.find({"age":{"$lte":70,"$gte":30}})
4. $in : 匹配指定键的多个值,; $nin和$in相反 $or 匹配多个键的值; $mod取模,将给定值除以第一个数,若余数等于第二个数就返回这条数据
db.users.find({"age":{"$in":[20,25,30]}})
db.users.find({"age":{"$nin":[20,25,30]}})
db.users.find({"$or":[{"age":20},{"winner":"true"}]})
db.users.find({"age":{"$mod":[20,5]}})
db.users.find({"age":{"$not":{"$mod":[20,5]}}})
5. 查询null:
db.users.find({"name":null}) //这样查询出来的还会匹配不包含该键(name)的文档
db.users.fin({"name":{"$in":[null],"$exists":true}}) //使用$exists,就可以准确查出
6. 数组查询:
db.users.find({"fruit":"apple"}) //查询含有apple的数组
db.users.find({"fruit":{"$all":["apple","banana"]}}) //查询包含有apple和banana的数组
db.users.find({"fruit.1":"banana"})//查询数组中第二值为banana的数组,数组是从0开始的
7. 根据数组长度查询:
db.users.find({"fruit":{"$size":3}})
//$size不能和$gte,$lte等合用,可以通过在更新数据时插入一个size字段解决
8. $slice 限制返回的文档数
9. 尽量不使用$where: (1) 查询速度慢-->每个文档都要从BSON转换为js对象,然后通过$where表达式运行; (2)不能使用索引;
10. limit,skip,sort
db.users.find().limit().skip().sort({"name":})
避免使用skip略过大量结果. 否则速度会很慢,原因是:首先要找到这些要略过的数据,然后再抛弃这些数据;不使用skip分页的方法:
//(1)获取第一页
var page1=db.users.find().sort({"date"-1}).limit(20)
//(2)使用最后一个date作为查询条件来获取下一页
var lastest=null
whlie(page1.hasNext)){
lastest=page1.next();
}
var page2=db.users.find({"date":{"$gt":lastest.date}}).sort({"date":-1}).limit(20)
11. 获取随机文档 : 在保存数据时就插入一个随机字段,查询时根据生成的随机数来查找文档
//插入数据
db.users.insert({"name":"11","age":22,"random":Math.random()})
db.users.insert({"name":"11","age":22,"random":Math.random()})
db.users.insert({"name":"11","age":22,"random":Math.random()})
db.users.insert({"name":"11","age":22,"random":Math.random()})
db.users.insert({"name":"11","age":22,"random":Math.random()}) //查询随机文档
var random=Math.random();
db.users.find({"random":{"$gt":random}})
//如果为空可以换为$lt
mongodb学习(五) 查询的更多相关文章
- [转载]MongoDB学习 (五):查询操作符(Query Operators).1st
本文地址:http://www.cnblogs.com/egger/archive/2013/05/04/3059374.html 欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 查询操作符(Quer ...
- 【转】MongoDB学习笔记(查询)
原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...
- MongoDB 学习五:索引
这章我们介绍MongoDB的索引,用来优化查询. 索引介绍 数据库索引有些类似书的目录. 一个查询如果没有使用索引被称为表扫描,意思是它必须像阅读整本书那样去获取一个查询结果.一般来说,我们应尽量避免 ...
- MongoDB学习笔记-查询
MongoDB中使用find或findOne函数执行查询 find函数 db.c.find()--查询集合c所有 db.c.find({“name”:”zhangsan”}) 注意:查询条件的值必须是 ...
- MongoDB学习--高级查询 [聚合Group]
Group大约需要一下几个参数. key:用来分组文档的字段.和keyf两者必须有一个 keyf:可以接受一个javascript函数.用来动态的确定分组文档的字段.和key两者必须有一个 initi ...
- MongoDB学习记录
一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...
- MongoDB学习笔记(五)--复制集 && sharding分片
主从复制 主从节点开启 主节 ...
- MongoDB学习笔记(五、MongoDB存储引擎与索引)
目录: mongoDB存储引擎 mongoDB索引 索引的属性 MongoDB查询优化 mongoDB存储引擎: 目前mongoDB的存储引擎分为三种: 1.WiredTiger存储引擎: a.Con ...
- MongoDB学习笔记(五)
MongoDB 查看执行计划 MongoDB 中的 explain() 函数可以帮助我们查看查询相关的信息,这有助于我们快速查找到搜索瓶颈进而解决它,本文我们就来看看 explain() 的一些用法及 ...
随机推荐
- ExtJS4 的dom
Ext使用了三个核心的工具类对我们掌握的DOM进行了完美的封装. ┣ Ext.Element(几乎对DOM的一切进行了封彻底装) ┣ Ext.DomHelper(一个强大的操控UI界面的工具类) ┣ ...
- js 基础笔记三
词法结构: 1:区分大小写 2:特殊字符的区分,unicode转义 3:注释, // ; /* */ ; 4 : 标识字符和保留字 数据类型: 1原始类型 数字,字符串,布尔值.特殊的原始值(nu ...
- Linux学习 -- 系统管理
1 进程管理 判断服务器健康状态 top [选项] 查看系统中所有进程 ps aux BSD格式 ps -le Linux格式 pstree [选项] -p 显示PID - ...
- [转]修改hosts文件不起作用
http://wayne173.iteye.com/blog/1876565 今天遇到个很奇怪的问题,在hosts文件里添加了一些域名指向后,发现根本没起作用,后来还发现个细节,就是hosts文件左下 ...
- SlidingMenu的使用,结合Fragment(eclipse环境)
首先下载SlidingMenu,有Library和Sample,然后在自己的项目中引入类库(引入智慧北京工作空间的Library),然后V4包会发生冲突,删掉自己项目Libs目录下的V4包即可 侧滑布 ...
- MapReduce常见算法
1.单词计数 2.数据去重 3.排序 4.Top K(求数据中的最大值) 5.选择 6.投影 7.分组 8.多表连接 9.单表关联
- 【转】使IFRAME在iOS设备上支持滚动
原文链接: Scroll IFRAMEs on iOS原文日期: 2014年07月02日 翻译日期: 2014年07月10日翻译人员: 铁锚 很长时间以来, iOS设备上Safari中超出边界的元素将 ...
- css初始化值
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,form,textarea,input,p,th,td,tr,table,tbody,thead,tfoot, ...
- Ubuntu vim显示行号语法高亮自动缩进
配置文件名为Ubuntu vimrc在Fedora中vim的配置文件存放在/etc目录中,配置文件名为Ubuntu vimrc在终端 输入以下命令来编辑Ubuntu vimrc配置文件:sudo vi ...
- hql 链接查询
第一部分.连接查询 一.内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.内连接分三种: 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询 ...