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() 的一些用法及 ...
随机推荐
- 基于IDL 的WebRS系统设计图
图1 用例图 图2 结构图
- 转:Jmeter常见问题 (转载) http://www.51testing.com/?uid-128005-action-viewspace-itemid-84094
说明:这些问答是从网上转载的,自己修改了其中的一些内容,如果大家兴趣,可以将大家在使用Jmeter的时候碰到的问题写下来,我们一起补充到这个问答里面,共同努力完善jmeter的资料. 1. JMet ...
- 转:Linux基本命令大全
Linux基本命令大全 新手刚刚接触Linux的时候可能处处感到不便,不过没有关系,接触新的事物都有这样的一个过程,在你用过Linux一段时间后,你就会逐渐了解Linux其实和Windows一样容 ...
- POJ 3307 Smart Sister
先找出所有的数,排序,然后o(1)效率询问 #include<cstdio> #include<cstring> #include<cmath> #include& ...
- Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https【转载】
转自 Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https - OPEN 开发经验库http://www.open-open.com/lib/view/open1 ...
- java的property
System.currentTimeMillis() 返回以毫秒为单位的当前时间.System.gc() 垃圾回收System.getProperties().返回当前的系统属性System.getP ...
- PKI 笔记
PKI – Public Key Infrastructure , 通常翻译为公钥基础设施. PKI 安全平台提供的4个服务,来保证安全的数据,分别是: l 身份识别 l 数据保密 l 数据完整 ...
- AD进行行PCB DRC检查时,软件提示...report_drc.xsl不存在
之前装过一次AD软件没有报过这样的错误,卸掉后重新装了之后,在对电气规则检查检查时“软件提示...report_drc.xsl不存在”. 原因:之前装的目录默认在C盘下,所以AD软件输出的报告也是默认 ...
- ds18b20再硬件设计部分的注意事项
1.DS18B20的供电方式: ps:寄生电源不是实际的电源器件,而是一种供电方式,即通过数据线供电. 如下面的两张图片所示,分别为外部供电模式下单只和多只DS18B20测温系统的典型电路连接图. ( ...
- 优化EF性能
本文介绍一些改善EF代码.优化其性能的相关方法,如NoTracking,GetObjectByKey, Include等,还包括编译查询.存储模型视图以及冲突处理等内容.. l Mer ...