查询方法-常用查询方法

查询多条数据 --db.集合名称.find({条件文档})
查询一条数据 --db.集合名称.findOne({条件文档})
结果格式化 --pretty()方法 --db.集合名称.find({条件文档}).pretty()

比较运算符

and :在json中写多个条件
or :$or 值为一个数组,数组中每个json元素为或的条件
and与or混合查询

# 查询年龄大于或等于18, 并且性别为true的学生
db.stu.find({age:{$gte:18},gender:true})

# 查询年龄大于18, 或性别为false的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})

# 查询年龄大于18或性别为女生, 并且家乡为大理
db.stu.find({$or:[{age:{$gt:18}}, {gender:false}], hometown:'大理'})
 

范围运算符

$in --判断在某个范围
$nin --判断不在某个范围
 
#查询年龄为18或20的学生
db.stu.find({age:{$in:[18,20]}})
#查询年龄为不为18或20的学生
db.stu.find({age:{$nin:[18, 20]}})

正则表达式

{字段:/正则/}     ---在pymogodb中不支持
{字段:{$regex:''正则"}}
# 查询姓黄的学生
db.stu.find({name:/^黄/})
db.stu.find({name:{$regex:'^黄'}})

limit和skip

使用场景:分页
limit():用于读取指定数量的文档
db.集合名称.find().limit(NUMBER)
skip():用于跳过指定数量的文档
db.集合名称.find().skip(NUMBER)
# 查询2条学生信息
db.stu.find().limit(2)
# 跳过两个学生,查询后面的
db.stu.find().skip(2)

# 混合使用
# 查询学生信息跳过3个学生, 再查询2个学生
db.stu.find().limit(2).skip(3)
db.stu.find().skip(3).limit(2)
 

自定义查询

在pymongo中使用自定义查询速度很慢, 比直接遍历都要慢很多
使⽤$where后⾯写⼀个函数, 返回满⾜条件的数据

# 查询年龄大于30的学生
db.stu.find({$where:function(){ return this.age > 30;}})

投影

在查询到的返回结果中只选择必要的字段
db.集合名称.find({},{字段名称:1,...})
参数为字段与值, 值为1表示显示, 值为0不显示, 普通字段不写就是不显示
 对于_id列默认是显示的, 如果不显示需要明确设置为0, 其他字段不显示不写即可
排序
sort() -用于对集合进行排序
db.集合名称.find().sort({字段:1,..})
参数1为升序排列  参数为-1位降序排列
# 查询所有学生,按年龄升序
db.stu.find().sort({age:1})
# 查询所有学生,按年龄降序
db.stu.find().sort({age:-1})
# 查询所有学生先根据性别降序, 再根据年龄升序
db.stu.find().sort({gender:-1, age:1})
统计个数
count() 用于统计结果集中文档条数
db.集合名称.find({条件}).count()
# 查询男生的个数
db.stu.find({gender:true}).count()
db.stu.count({gender:true})

统计年龄大于20的男生的个数
db.stu.count({age:{$gt:20}, gender:true})

去重

distinct() 对数据进行去重
db.集合名称.distinct('去重字段',{条件})
# 查询学生的家乡,不能重复
db.stu.distinct('hometown')
# 查询年龄大于20的学生的家乡, 不能重复
db.stu.distinct('hometown', {age:{$gt:20}})

MongoDB高级操作(2)的更多相关文章

  1. mongodb高级操作及在Java企业级开发中的应用

    Java连接mongoDB Java连接MongoDB需要驱动包,个人所用包为mongo-2.10.0.jar.可以在网上下载最新版本. package org.dennisit.mongodb.st ...

  2. MongoDB高级操作

    参考MongoDB菜鸟教程 一.$type操作符 MongoDB 中可以使用的类型如下表所示: 类型 数字 备注 Double 1   String 2   Object 3   Array 4   ...

  3. mongodb 高级操作

    聚合 aggregate 聚合(aggregate)主要用于计算数据,类似sql中的sum().avg() 语法 db.集合名称.aggregate([{管道:{表达式}}]) 管道 管道在Unix和 ...

  4. SpringMVC整合Mongodb开发,高级操作

    开发环境: 操作系统:windows xpMongodb:2.0.6依 赖 包:Spring3.2.2 + spring-data-mongodb-1.3.0 + Spring-data-1.5 +  ...

  5. mongodb常用操作语句

    mongodb常用操作语句 A:创建数据表 db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean&g ...

  6. MongoDB高级查询用法大全

    转载 http://blog.163.com/lgh_2002/blog/static/440175262012052116455/ 详见官方的手册: http://www.mongodb.org/d ...

  7. DataBase MongoDB高级知识

    MongoDB高级知识 一.mongodb适合场景: 1.读写分离:MongoDB服务采用三节点副本集的高可用架构,三个数据节点位于不同的物理服务器上,自动同步数据.Primary和Secondary ...

  8. Mongodb高级查询【二】

    上一篇文章,写了mongodb常规操作,继续写入,本章主要讲高级查询,文本,聚集,大数据查询. Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个.当然有很多查询跟关系型查询无法相比. ...

  9. mongoDB高级查询$type4array使用解析

    今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...

随机推荐

  1. Oracle substr() instr() 用法

    转载:oracle中substr() instr() 用法 substr(字符串,截取开始位置,截取长度) = 返回截取的字符串instr(源字符串,目标字符串,起始字符串,匹配字符串) = 返回要截 ...

  2. Fiddler抓包调试前端脚本代码

    0.写在前面的话 之前看了阮一峰老师关于互联网协议入门的博客,受益匪浅,接着再去体会了下HTTP协议,就想着看实际网络访问中的那些HTTP请求头和响应是什么样的.Chrome的调试工具的Network ...

  3. Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie

    HttpClient 与 HttpURLConnection 共用 SessionId HttpClient 与 HttpUrlConnection 是Android 中HTTP操作最常见的訪问方式. ...

  4. [Usaco2005 Open]Disease Manangement 疾病管理 BZOJ1688

    分析: 这个题的状压DP还是比较裸的,考虑将疾病状压,得到DP方程:F[S]为疾病状态为S时的最多奶牛数量,F[S]=max{f[s]+1}; 记得预处理出每个状态下疾病数是多少... 附上代码: # ...

  5. Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储? - z

    这几天在做Android应用的远程更新功能,将下载的更新包放在移动设备上指定的目录.用的是  Environment.getExternalStorageDirectory() 这个方法,然后在获取的 ...

  6. Django Rest Framework源码剖析(七)-----分页

    一.简介 分页对于大多数网站来说是必不可少的,那你使用restful架构时候,你可以从后台获取数据,在前端利用利用框架或自定义分页,这是一种解决方案.当然django rest framework提供 ...

  7. 网络对抗技术 2017-2018-2 20152515 Exp6 信息搜集与漏洞扫描

    1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法.包括: (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的 ...

  8. C++之enum枚举量声明、定义、使用与枚举类详解

    C++之enum枚举量声明.定义.使用与枚举类详解 学习一个东西,首先应该指导它能做什么,其次去知道它怎么去做,最后知道为什么去这么做. 知其然知其所以然.不能冒进 ,一步一步的慢慢来.

  9. 2017-2018-2 20155333 《网络对抗技术》 Exp1 PC平台逆向破解

    2017-2018-2 20155333 <网络对抗技术> Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行 ...

  10. 新员工入门 - for测试

    23456人员介绍 XXX 测试工作 [软件] Chrome 浏览器.jsonviewer.Firefox.FireBug HTTP协议与抓包 - fildder.wireshirk等 DB查询工具 ...