链式查询

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 }

mongodb--find高级用法的更多相关文章

  1. MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

    一.基本操作 . mongod 启动服务端 2. mongo 启动客户端 3. show databses 查看本地磁盘的数据库 4. use 库名 切换到要使用的数据库 5. db 查看当前使用的数 ...

  2. Visual Studio 宏的高级用法

    因为自 Visual Studio 2012 开始,微软已经取消了对宏的支持,所以本篇文章所述内容只适用于 Visual Studio 2010 或更早期版本的 VS. 在上一篇中,我已经介绍了如何编 ...

  3. SolrNet高级用法(分页、Facet查询、任意分组)

    前言 如果你在系统中用到了Solr的话,那么肯定会碰到从Solr中反推数据的需求,基于数据库数据生产索引后,那么Solr索引的数据相对准确,在电商需求中经常会碰到菜单.导航分类(比如电脑.PC的话会有 ...

  4. sqlalchemy(二)高级用法

    sqlalchemy(二)高级用法 本文将介绍sqlalchemy的高级用法. 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此需要在address上增 ...

  5. Solr学习总结(六)SolrNet的高级用法(复杂查询,分页,高亮,Facet查询)

    上一篇,讲到了SolrNet的基本用法及CURD,这个算是SolrNet 的入门知识介绍吧,昨天写完之后,有朋友评论说,这些感觉都被写烂了.没错,这些基本的用法,在网上百度,资料肯定一大堆,有一些写的 ...

  6. 再谈Newtonsoft.Json高级用法

    上一篇Newtonsoft.Json高级用法发布以后收到挺多回复的,本篇将分享几点挺有用的知识点和最近项目中用到的一个新点进行说明,做为对上篇文章的补充. 阅读目录 动态改变属性序列化名称 枚举值序列 ...

  7. Jquery remove 高级用法

    Jquery remove 高级用法 html 代码 <div class="file-image">abc1111</div><div class= ...

  8. Newtonsoft.Json高级用法(转)

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

  9. redis(二)高级用法

    redis(二)高级用法 事务 redis的事务是一组命令的集合.事务同命令一样都是redis的最小执行单元,一个事务中的命令要么执行要么都不执行. 首先需要multi命令来开始事务,用exec命令来 ...

  10. 【转】 Newtonsoft.Json高级用法

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

随机推荐

  1. git出错调试

    https://stackoverflow.com/questions/6178401/how-can-i-debug-git-git-shell-related-problems git_trace ...

  2. php导出mysql源码

    件名:db_backup.php 源代码如下: 复制代码 代码如下: <?php ini_set("max_execution_time", "180") ...

  3. Redis(五)-数据库

    Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以将制定的书存储在哪个字典中,这与关系书库实例中可以i创建多个数据库类似,所以可以将其中的每个字典 ...

  4. SPOJ GSS1 & GSS3&挂了的GSS5

    线段树然后yy一下,搞一搞. GSS1: 题意:求最大区间和. #include <cstdio> #include <algorithm> using namespace s ...

  5. 表单校验插件(bootstrap-validator)

    表单校验插件(bootstrap-validator) 参考文档 http://blog.csdn.net/nazhidao/article/details/51542508 http://blog. ...

  6. 2C课程笔记分享_StudyJams_2017

    课程2C-实践:创建交互式应用 概述 课程2C的内容主要是练习巩固2A.2B中讲解的内容,并设计实现一款篮球比赛的计分板应用及其界面的美化. Warm-Up:准备活动 新建项目PracticeSet2 ...

  7. Ubuntu中在终端进入root权限但是总提示密码错误的解决方案

    先解除root锁定,为root用户重新设置密码 打开终端输入:sudo passwd(注意是passwd不是password) Password: <--- 输入你当前用户的密码 Enter n ...

  8. Hive2.1.1集群搭建

    软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...

  9. DHCP 和 MDT 分开服务器的设置方法

    DHCP设置 043:供应商特定信息:01 04 00 00 00 00 FF 060:PXEClient:PXEClient 066:启动服务器主机名:IP 067:启动文件名:\Boot\x86\ ...

  10. AI:IPPR的数学表示-CNN结构/参数分析

    前言:CNN迎接多类的挑战 特定类型的传统PR方法特征提取的方法是固定的,模式函数的形式是固定的,在理论上产生了特定的"局限性" 的,分类准确度可以使用PAC学习理论的方法计算出来 ...