链式查询

db.person.find().limit(4).sort({sex:-1}) // sort来说,1 是升序, -1 是降序
尽量不要用mongodb去做一些复杂的运算

分页的写法

···
最简单的分页的写法
var page1 = db.person.find(name).limit(100);
var page2 = db.person.find(name).skip(100).limit(100);
···

指定选中的列保留

db.str.find({},{_id:0,age:1}); //查询出age,不要_id

大于小于等于

> var cond={"age":{"$gte":1,"$lte":2}}
> db.person.find(cond)
{ "_id" : ObjectId("56760f3c5001a3b4af601567"), "name" : "hxc19", "age" : 1 }
{ "_id" : ObjectId("56760f3c5001a3b4af601568"), "name" : "hxc20", "age" : 1.0526315789473684 }

in,nin,or in,nin:一个key后再加上一个子文档。

> var cond={"age":{"$in":[1,2,3,4]}}
> db.person.find(cond)
{ "_id" : ObjectId("56760f3c5001a3b4af601567"), "name" : "hxc19", "age" : 1 }

find中的正则表达式,和sql中的like操作一个样 O(N) Table Scan

> var cond={"name":/18$/}
> db.person.find(cond)
{ "_id" : ObjectId("56760f3c5001a3b4af601566"), "name" : "hxc18", "age" : 0.9473684210526315 }

查询数组中的元素

> var single={"name":"jack",address:["anhui","shanghai","beijing"]}
> db.mytest.insert(single)
> db.mytest.find()
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [  "anhui",  "shanghai",  "beijing" ] }
> db.mytest.find({"address":"anhui"})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [  "anhui",  "shanghai",  "beijing" ] }

all操作

db.mytest.find({"address":{"$all":["anhui","shanghai"]}})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [  "anhui",  "shanghai",  "beijing" ] }
db.mytest.find({"address":{"$all":["anhui","s"]}})

size操作

db.mytest.find({"address":{"$size":2}})
db.mytest.find({"address":{"$size":3}})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [  "anhui",  "shanghai",  "beijing" ] }

slice操作

db.mytest.find({"name":"jack"},{"address":{"$slice":1}})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [  "anhui" ] }
db.mytest.find({"name":"jack"},{"address":{"$slice":2}})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [  "anhui",  "shanghai" ] }

where 【更灵活更强大】

可以灌输js代码,所以会有最大的灵活性。

db.person.find({"$where":function(){return this.name=="hxc19" && this.age==1}})
{ "_id" : ObjectId("56760f3c5001a3b4af601567"), "name" : "hxc19", "age" : 1 }
db.person.find({"$where":function(){ var i=1; return (this.age/1)==1 }})
{ "_id" : ObjectId("56760f3c5001a3b4af601567"), "name" : "hxc19", "age" : 1 }db.person.find({"$where":function(){return ( this.age>1&& this.age<2); }})
{ "_id" : ObjectId("56760f3c5001a3b4af601568"), "name" : "hxc20", "age" : 1.0526315789473684 }
{ "_id" : ObjectId("56760f3c5001a3b4af601569"), "name" : "hxc21", "age" : 1.105263157894737 }
{ "_id" : ObjectId("56760f3c5001a3b4af60156a"), "name" : "hxc22", "age" : 1.1578947368421053 }
{ "_id" : ObjectId("56760f3c5001a3b4af60156b"), "name" : "hxc23", "age" : 1.2105263157894737 }

转载于:https://www.cnblogs.com/weloveshare/p/5765280.html

mongodb--find高级用法相关推荐

  1. vim的高级用法配置以及在系统中如何获取帮助

    vim的高级用法配置以及在系统中如何获取帮助 1 vim的三种模式 1.1 使用方法 1.2 vim模式 2 vim工作的基本配置 2.1 临时设定(set设定) 2.2 永久设定方式 3 搜索 4 ...

  2. Cacti Weathermap 高级用法 (二)

    成都长宽Weathermap实际运用的效果图示例: 这是一个CNC出口的质量监控图. 途中cnc节点(红色)是一个展示图例,TEL节点根据存活状态显示为绿色 TEL节点上面P:47.2ms 是一个,这 ...

  3. JAVA正则表达式高级用法(分组与捕获)

    2019独角兽企业重金招聘Python工程师标准>>> 正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了.这里主要讲解一下 ...

  4. GUN sed高级用法,sed脚本编写

    这里举一些sed常用的高级用法例子经供参考: 一下操作都针对file.txt文件作修改 [root@QX-××× ~]# cat file.txt libgcc-4.4.7-4.el6.x86_64 ...

  5. java return用法_Java枚举的高级用法之多键值的映射使用

    枚举Enum单映射使用 做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如 枚举单映射使用 但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可 ...

  6. (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案

    (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 参考文章: (1)(转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 (2)ht ...

  7. Python 内置函数sorted()在高级用法

    对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. ...

  8. class() 高级用法 -- lua

    class() 高级用法 class() 除了定义纯 Lua 类之外,还可以从 C++ 对象继承类.比如需要创建一个工具栏,并在添加按钮时自动排列已有的按钮,那么我们可以使用如下的代码:-- 从 CC ...

  9. MongoDB:详细解释mongodb的高级操作,聚合和游标

    前几天总结了mongodb的安装入门.详细解释了增删改查的基本操作,今天再来总结下mongodb更高级的操作,聚合和游标. 一.聚合,mongodb的聚合操作一般分为四种情景,分别是:count.di ...

  10. Newtonsoft.Json高级用法

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

最新文章

  1. sql server 经典SQL——分组统计
  2. 肝完这篇垃圾回收,和面试官扯皮不怕了
  3. UA MATH574M 统计学习V Variable Selection: LASSO
  4. H5直播系列四 RTMP HTTP-FLV HLS MPEG-DASH
  5. android SharedPreferences数据存储
  6. Forefront TMG2010中文版安装体验
  7. java excutorthread_JAVA 线程池ThreadPoolExcutor原理探究
  8. 如何将一个向量投影到一个平面上_CameraLidar投影:2D3D导航
  9. enspar启动失败40_法式长棍面包,在家自己做,简单零失败,低糖无油不担心长胖...
  10. 当SQLServer判断不等于遇到null的时候
  11. 蓝绿部署、滚动部署、灰度发布、金丝雀发布-概念介绍---应用部署001
  12. android inputmethodmanager 不自动弹出,Android中软键盘InputMethodManager的弹出和隐藏,以及显示和隐藏的监听...
  13. [Oracle][Standby][PDB]在PDB中修改参数,设置范围为 SPFILE,报 ORA-65099错误
  14. 如何启动一个新的cmd窗口并在其内执行命令
  15. String通过“+”号拼接字符串的底层实现
  16. linux - 流量切分线路
  17. 模型动态测试工具 TPT 18更多新特性——HiL测试、需求管理
  18. 小程序 实现两种导航功能
  19. Java实现XLS和XLSX之间的相互转换
  20. VMware Workstation 15 Pro 激活密钥

热门文章

  1. python小数乘法_Polymorph:支持几乎所有现有协议的实时网络数据包操作框架
  2. python编程入门与实践_Python编程入门到实践(二)
  3. mybatis是什么_为什么SpringMVC可以正确解析方法参数名称,但MyBatis却不行?
  4. MySQL8改root密码
  5. c语言哈夫曼压缩文本,用哈夫曼压缩文件(C语言)
  6. android id设计模式,Android与设计模式话题
  7. Linux截取文件名的后几位,Linux字符串截取和处理命令 cut、printf、awk、sed、sort、wc...
  8. python序列5位置_Python序列构成的数组
  9. android 模拟器 相册里传照片_引力相册APP下载-引力相册下载v1.1 官方版
  10. php 从字符中随机挑一个数,php 对中文字符串的处理- 随机取出指定个数的汉字...