查询方法-常用查询方法

查询多条数据 --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. HDU 3440 House Man(编号排序+线性差分约束跑最短路)

    House Man Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. 多模匹配算法之Aho-Corasick

    除剔除那些含有敏感词的文本,由于有大量的敏感词,所以通过简单的正则表达式和字符串查找的方式效率太低,每次都有遍历一次字符串.而AC算法的核心思想就是避免不必要的回溯使搜索一直沿着向前的方向,最大可能的 ...

  3. Hadoop中ssh+IP、ssh+别名免秘钥登录配置

    1.为什么要进行 SSH 无密码验证配置? Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个Da ...

  4. 20155337 《网络对抗》 Exp2 后门原理与实践

    20155337 <网络对抗> Exp2 后门原理与实践 一.基础问题回答 - 例举你能想到的一个后门进入到你系统中的可能方式? 在Unix里,login程序通常用来对telnet来的用户 ...

  5. tkinter 对键盘和鼠标事件的处理

    鼠标事件 <ButtonPress-n> <Button-n> <n> 鼠标按钮n被按下,n为1左键,2中键,3右键 <ButtonRelease-n> ...

  6. Linux环境中Qt程序的手工发布

    Linux环境中Qt程序的手工发布

  7. Windows下面的常用的快捷键

    最小化的快捷键: 最小化当前窗口:Alt+ESC 还原刚刚最小化的窗口:Alt+Tab(次快捷键组合可以在多个窗口中切换) 显示桌面,切换之前的桌面:Win+D   在浏览器页面之间切换:Ctrl+T ...

  8. CS100.1x-lab4_machine_learning_student

    这是这门课第一次接触机器学习,主题是Predicting Movie Ratings.难度比上一次作业要简单点..上一次作业真的挺难...相关ipynb文件见我github. 这里我们会用到Spark ...

  9. mysql基础(三)——中级查询

    创建表 CREATE TABLE DEPT( DEPTNO ) PRIMARY KEY, DNAME ) , LOC ) ) ; ,'ACCOUNTING','NEW YORK'); ,'RESEAR ...

  10. 移动端H5页面上传图片或多张图片

    传统PC网页上传文件,大家都已经熟悉,这里不做介绍. 本文简单介绍移动端常用上传图片功能.灵活使用轮询或长连接可实现PC与移动端数据同步,即PC端需要上传的图片是移动拍照下来或移动端硬盘储存的,不需要 ...