查询方法-常用查询方法

查询多条数据 --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. Android github上的好的开源项目汇总

    转自:http://blog.csdn.net/ithomer/article/details/8882236 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上.基于 ...

  2. poj 1364 King(线性差分约束+超级源点+spfa判负环)

    King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14791   Accepted: 5226 Description ...

  3. 委托、事件、匿名方法、Lambda

    一.委托(delegate)     定义:public delegate  void/类型  DefinedDelegate(参数1,参数2...) 委托是类型安全的. 委托实例:DefinedDe ...

  4. Java基础—常用类之String类

    一.String类是什么 public final class String implements java.io.Serializable, Comparable<String>, Ch ...

  5. 20155229《网络对抗技术》Exp5:MSF基础应用

    实验内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms08-067; 一个针对浏览器的攻击,如ms11-050: 一个针对 ...

  6. 20155311 Exp3 免杀原理与实践

    20155311 Exp3 免杀原理与实践 •免杀 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. [基础问题回答] (1)杀软是如何检测出恶意代码的? 1.通过特征 ...

  7. linux下通过软连接实现访问项目路径外面的资源

            在javaweb项目开发中,图片上传是个比较常见的场景.一般都是在项目路径下建个文件夹,然后上传到该文件夹下:这样这个图片就可以和静态资源一样被直接访问.这样的好处就是访问这图片特别方 ...

  8. 欧几里得算法(及扩展)&&快速幂(二分+位运算)

    最近在二中苦逼地上课,天天听数论(当然听不懂) 但是,简单的还是懂一点的 1.欧几里得算法 说得这么高级干什么,gcd入门一个月的人都会吧,还需要BB? 证明可参照其他博客(不会),主要就是gcd(a ...

  9. kvm虚拟化二: 字符界面管理及 无人值守安装

    1. 安装必要工具yum install / tigervnc //vnc远程桌面客户端 virt-viewer //虚拟机查看器 2.安装虚拟机virt-install / -n 名字 //虚拟机名 ...

  10. 谷歌商店高级搜索 Google play advanced search

    这个问题一直搜索了很久都没有答案,后来在StackOverflow上提问,很久也没人回答. 详见我的SO:https://stackoverflow.com/questions/52939493/ho ...