数据查询

基本查询

  • 方法find():查询
db.集合名称.find({条件文档})
  • 方法findOne():查询,只返回第一个
db.集合名称.findOne({条件文档})
  • 方法pretty():将结果格式化
db.集合名称.find({条件文档}).pretty()

比较运算符

  • 等于,默认是等于判断,没有运算符
  • 小于$lt
  • 小于或等于$lte
  • 大于$gt
  • 大于或等于$gte
  • 不等于$ne
  • 例1:查询名称等于'gj'的学生
db.stu.find({name:'gj'})
  • 例2:查询年龄大于或等于18的学生
db.stu.find({age:{$gte:18}})

逻辑运算符

  • 查询时可以有多个条件,多个条件之间需要通过逻辑运算符连接
  • 逻辑与:默认是逻辑与的关系
  • 例3:查询年龄大于或等于18,并且性别为1的学生
db.stu.find({age:{$gte:18},gender:1})
  • 逻辑或:使用$or
  • 例4:查询年龄大于18,或性别为0的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:1}]})
  • and和or一起使用
  • 例5:查询年龄大于18或性别为0的学生,并且学生的姓名为gj
db.stu.find({$or:[{age:{$gte:18}},{gender:1}],name:'gj'})

范围运算符

  • 使用"$in","$nin" 判断是否在某个范围内
  • 例6:查询年龄为18、28的学生
db.stu.find({age:{$in:[18,28]}})

支持正则表达式

  • 使用//或$regex编写正则表达式
  • 例7:查询姓黄的学生
db.stu.find({name:/^黄/})
db.stu.find({name:{$regex:'^黄'}}})

自定义查询

  • 使用$where后面写一个函数,返回满足条件的数据
  • 例7:查询年龄大于30的学生
db.stu.find({$where:function(){return this.age>20}})

Limit

  • 方法limit():用于读取指定数量的文档
  • 语法:
db.集合名称.find().limit(NUMBER)
  • 参数NUMBER表示要获取文档的条数
  • 如果没有指定参数则显示集合中的所有文档
  • 例1:查询2条学生信息
db.stu.find().limit(2)

skip

  • 方法skip():用于跳过指定数量的文档
  • 语法:
db.集合名称.find().skip(NUMBER)
  • 参数NUMBER表示跳过的记录条数,默认值为0
  • 例2:查询从第3条开始的学生信息
db.stu.find().skip(2)

一起使用

  • 方法limit()和skip()可以一起使用,不分先后顺序

  • 创建数据集

for(i=0;i<15;i++){db.t1.insert({_id:i})}
  • 查询第5至8条数据
db.stu.find().limit(4).skip(5)
或
db.stu.find().skip(5).limit(4)

投影

  • 在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段
  • 如:一个文档有5个字段,需要显示只有3个,投影其中3个字段即可
  • 语法:
  • 参数为字段与值,值为1表示显示,值为0不显示
db.集合名称.find({},{字段名称:1,...})
  • 对于需要显示的字段,设置为1即可,不设置即为不显示
  • 特殊:对于_id列默认是显示的,如果不显示需要明确设置为0
  • 例1
db.stu.find({},{name:1,gender:1})
  • 例2
db.stu.find({},{_id:0,name:1,gender:1})

排序

  • 方法sort(),用于对结果集进行排序
  • 语法
db.集合名称.find().sort({字段:1,...})
  • 参数1为升序排列
  • 参数-1为降序排列
  • 例1:根据性别降序,再根据年龄升序
db.stu.find().sort({gender:-1,age:1})

统计个数

  • 方法count()用于统计结果集中文档条数
  • 语法
db.集合名称.find({条件}).count()
  • 也可以与为
db.集合名称.count({条件})
  • 例1:统计男生人数
db.stu.find({gender:1}).count()
  • 例2:统计年龄大于20的男生人数
db.stu.count({age:{$gt:20},gender:1})

消除重复

  • 方法distinct()对数据进行去重
  • 语法
db.集合名称.distinct('去重字段',{条件})
  • 例1:查找年龄大于18的性别(去重)
db.stu.distinct('gender',{age:{$gt:18}})

MongoDB数据查询相关推荐

  1. 3.MongoDB数据查询

    数据查询 基本查询 方法find():查询:db.集合名称.find({条件文档}) 方法findOne():查询,只返回第一个:db.集合名称.findOne({条件文档}) 方法pretty(): ...

  2. Mongodb数据查询 | Mongodb

    1.基本查询①方法find():查询db.集合名称.find({条件文档})②方法findOne():查询,只返回第一个db.集合名称.findOne({条件文档})③方法pretty():将结果格式 ...

  3. MongoDB数据查询中的关键字ne

    mongodb有这样一个关键字 ne 就是not equal的意思 Syntax: {field: {$ne: value} } $ne selects the documents where the ...

  4. 12 MongoDB - 数据查询(消除重复)

    方法distinct()对数据进行去重 语法: db.集合名称.distinct('去重字段',{条件}) 例1:查找年龄大于18的性别(去重) db.stu.distinct('gender',{a ...

  5. MongoDB 数据文件损坏修复救命repair与致命危险

    最近,一客户单实例mongodb数据库,没有备份的情况下遇到了断电导致的数据文件损坏,由于客户业务需要 及数据的不敏感性,要求尽快恢复业务,使用了Mongdb的自动修复repair命令进行修复.可喜的 ...

  6. 从mongodb中查询数据

    连接mongodb: public class GenericMga{private DB db;public DB getDB(){return this.db;}public void setDB ...

  7. java mongodb 模糊查询_Java操作MongoDB插入数据进行模糊查询与in查询功能的方法

    Java操作MongoDB插入数据进行模糊查询与in查询功能 由于需要用MongoDB缓存数据,所以自己写了一套公共的存放和读取方法 具体如下: 存放mongodb: /** * 公共方法:设置Obj ...

  8. MongoDB模糊查询-查询某月的数据

    mongodb 模糊查询 应用场景: 做报表统计查询2019年02月的数据 db.getCollection('WT_SpareManage').find({"useDate":{ ...

  9. mongodb,robomongo 数据查询

    可视化管理工具:Robomongo 是开源,免费的MongoDB管理工具,下载地址:Robomongo下载 1.  基本查询:     构造查询数据.     > db.test.findOne ...

最新文章

  1. 上班摸鱼,刚刚发现在 VScode 中可玩魂斗罗,超级玛丽
  2. AGC029 E: Wandering TKHS
  3. QML基本可视化元素--Text
  4. AOJ 491.扑克牌
  5. asp实现批量录入数据
  6. C#中使用Path、Directory、Split、Substring实现对文件路径和文件名的常用操作实例
  7. 如何写一手好 SQL 【频繁出现慢SQL告警的优化方案】
  8. 3种常见的Class级别的错误
  9. Session【常见问题请见下图】
  10. 列表框、下拉列表框或组合框与数据库
  11. sql中的distinct
  12. 2021华为软件精英挑战赛的baseLine,Java版,仅供参考,无核心算法
  13. idea导出数据库的可执行sql文件
  14. 编程c语言被windows拦截,C语言调用detours劫持WindowsAPI
  15. 单纯形法的四种特殊情形
  16. ios appstore 上架应用被拒绝原因
  17. WPF支持OneWay,TwoWay,OneTime,Default和OneWayToSource
  18. 申请CVE的姿势总结
  19. 宏源药业上市破发:跌幅16% 公司市值168亿超募17亿
  20. 桂电计算机系入学怎么分班,桂电研究生-()学期课程总表.doc

热门文章

  1. FPGA学习(第8节)-Verilog设计电路的时序要点及时序仿真
  2. 为你的网站加上SSL,可以使用HTTPS进行访问
  3. 所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器......
  4. C++头文件,预处理详解
  5. “strcpy” 模拟的实现
  6. sequelize常见操作使用方法
  7. js获取表单文本框中的值
  8. 通用单向链表设计(一)——接口的设计
  9. MDOP 2011 R2 DaRT 7.0 创建包含诊断和恢复的图形化PE
  10. qt lighthouse相关