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学习(五) 查询的更多相关文章

  1. [转载]MongoDB学习 (五):查询操作符(Query Operators).1st

    本文地址:http://www.cnblogs.com/egger/archive/2013/05/04/3059374.html   欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 查询操作符(Quer ...

  2. 【转】MongoDB学习笔记(查询)

    原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...

  3. MongoDB 学习五:索引

    这章我们介绍MongoDB的索引,用来优化查询. 索引介绍 数据库索引有些类似书的目录. 一个查询如果没有使用索引被称为表扫描,意思是它必须像阅读整本书那样去获取一个查询结果.一般来说,我们应尽量避免 ...

  4. MongoDB学习笔记-查询

    MongoDB中使用find或findOne函数执行查询 find函数 db.c.find()--查询集合c所有 db.c.find({“name”:”zhangsan”}) 注意:查询条件的值必须是 ...

  5. MongoDB学习--高级查询 [聚合Group]

    Group大约需要一下几个参数. key:用来分组文档的字段.和keyf两者必须有一个 keyf:可以接受一个javascript函数.用来动态的确定分组文档的字段.和key两者必须有一个 initi ...

  6. MongoDB学习记录

    一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...

  7. MongoDB学习笔记(五)--复制集 && sharding分片

    主从复制                                                                                       主从节点开启 主节 ...

  8. MongoDB学习笔记(五、MongoDB存储引擎与索引)

    目录: mongoDB存储引擎 mongoDB索引 索引的属性 MongoDB查询优化 mongoDB存储引擎: 目前mongoDB的存储引擎分为三种: 1.WiredTiger存储引擎: a.Con ...

  9. MongoDB学习笔记(五)

    MongoDB 查看执行计划 MongoDB 中的 explain() 函数可以帮助我们查看查询相关的信息,这有助于我们快速查找到搜索瓶颈进而解决它,本文我们就来看看 explain() 的一些用法及 ...

随机推荐

  1. ExtJS4 的dom

    Ext使用了三个核心的工具类对我们掌握的DOM进行了完美的封装. ┣ Ext.Element(几乎对DOM的一切进行了封彻底装) ┣ Ext.DomHelper(一个强大的操控UI界面的工具类) ┣ ...

  2. js 基础笔记三

    词法结构: 1:区分大小写 2:特殊字符的区分,unicode转义 3:注释, //  ;  /* */ ; 4 : 标识字符和保留字 数据类型: 1原始类型 数字,字符串,布尔值.特殊的原始值(nu ...

  3. Linux学习 -- 系统管理

    1 进程管理 判断服务器健康状态 top [选项] 查看系统中所有进程 ps aux      BSD格式 ps -le        Linux格式 pstree [选项] -p   显示PID - ...

  4. [转]修改hosts文件不起作用

    http://wayne173.iteye.com/blog/1876565 今天遇到个很奇怪的问题,在hosts文件里添加了一些域名指向后,发现根本没起作用,后来还发现个细节,就是hosts文件左下 ...

  5. SlidingMenu的使用,结合Fragment(eclipse环境)

    首先下载SlidingMenu,有Library和Sample,然后在自己的项目中引入类库(引入智慧北京工作空间的Library),然后V4包会发生冲突,删掉自己项目Libs目录下的V4包即可 侧滑布 ...

  6. MapReduce常见算法

    1.单词计数 2.数据去重 3.排序 4.Top K(求数据中的最大值) 5.选择 6.投影 7.分组 8.多表连接 9.单表关联

  7. 【转】使IFRAME在iOS设备上支持滚动

    原文链接: Scroll IFRAMEs on iOS原文日期: 2014年07月02日 翻译日期: 2014年07月10日翻译人员: 铁锚 很长时间以来, iOS设备上Safari中超出边界的元素将 ...

  8. 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, ...

  9. Ubuntu vim显示行号语法高亮自动缩进

    配置文件名为Ubuntu vimrc在Fedora中vim的配置文件存放在/etc目录中,配置文件名为Ubuntu vimrc在终端 输入以下命令来编辑Ubuntu vimrc配置文件:sudo vi ...

  10. hql 链接查询

    第一部分.连接查询 一.内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.内连接分三种: 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询 ...