MongoDB的查询方法

发布时间 - 2026-01-11 00:54:39    点击率:

代码:

db.blogs.insert([
  {
    "author": "张三",
    "title": "MongoDB简介",
    "content": "它是介于关系型数据库和非关系型数据库之间的一种NoSQL数据库,用C++编写,是一款集敏捷性、可伸缩性、扩展性于一身的高性能的面向文档的通用数据库",
    "tags": [
      "MongoDB",
      "NoSQL"
    ],
    "comment": [
      {
        "name": "Jack",
        "detail": "Good!",
        "date": ISODate("2015-07-09 09:55:49")
      },
      {
        "name": "Tom",
        "detail": "Hello World!",
        "date": ISODate("2015-07-09 18:12:35")
      },
      {
        "name": "Alice",
        "detail": "你好,Mongo!",
        "date": ISODate("2015-07-10 20:30:30")
      }
    ],
    "readCount": 154
  },
  {
    "author": "李四",
    "title": "1+1等于几",
    "content": "有的人说1+1=2,因为这是老师从小告诉我们的;而有的人说1+1=11,这是两个1的组合;但是有些人就认为1+1=1,他们觉得1个团队加上另一个团队,会组成了一个更强大的团队!",
    "tags": [
      "story",
      "rule",
      "数学"
    ],
    "comment": [
      {
        "name": "王小光",
        "detail": "每个人心里边都有自己的答案。",
        "date": ISODate("2015-07-10 11:45:57")
      }
    ],
    "readCount": 367
  },
  {
    "author": "李四",
    "title": "如何写一篇好的博客?",
    "content": "1、目标;2、坚持;3、分享;4、学习;5、提高",
    "tags": null,
    "comment": [
      {
        "name": "小明",
        "detail": "ComeOn!!!!",
        "date": ISODate("2015-07-10 14:49:06")
      },
      {
        "name": "Nike",
        "detail": "终身学习!",
        "date": ISODate("2015-07-11 10:22:36")
      },
      {
        "name": "小红",
        "detail": "贵在坚持吧、",
        "date": ISODate("2015-07-12 12:12:12")
      }
    ],
    "readCount": 1489,
    "isTop": true
  }
])

Test Data

以上面的测试数据为基础,进行下面的基本查询操作:

1、查询所有博客

db.blogs.find()
或
db.blogs.find({})

注:查询一个文档:db.blogs.findOne()

2、查询所有博客的标题和内容(指定需要返回的键值)

db.blogs.find({},{"title":1,"content":1,"_id":0})

注:1表示返回,0表示不返回。默认情况下,“_id”这个键总是被返回,即便是没有指定这个键

3、查询作者为“张三”的博客(=操作)

db.blogs.find({"author":"张三"})
或
db.blogs.find({"author":{"$eq":"张三"}})

4、查询除了作者为“张三”的博客(!=操作)

db.blogs.find({"author":{"$ne":"张三"}})

5、查询作者为“李四”并且博客标题为“MongoDB简介”的博客(and操作)

db.blogs.find({"author":"张三","title":"MongoDB简介"})

6、查询阅读量大于等于200并且小于1000的博客(>=操作)

db.blogs.find({"readCount":{"$gte":200,"$lt":1000}})

注:“$lt”,“$lte”,“$gt”,“$gte”分别对应<,<=,>,>=操作

7、查询作者为“张三”或者“李四”的博客(or操作)

db.blogs.find({"$or":[{"author":"张三"},{"author":"李四"}]})

8、查询博客标签包含了“NoSQL”或者“数学”的博客(in操作)

db.blogs.find({"tags":{"$in":["NoSQL","数学"]}})

注:not in操作

db.blogs.find({"tags":{"$nin":["NoSQL","数学"]}}) //不包含

9、查询标签为空的博客(null操作)

db.blogs.find({"tags":null})

注:null不仅会匹配到某个键为null的文档,也会匹配不包含这个键的文档

10、查询内容里边包含了数字“1”的博客

db.blogs.find({"content":/1/})

注:只要符合常规正则表达式的,都能被MongoDB接受
数组操作

11、查询标签里边既包含“story”,又包含了“rule”的博客

db.blogs.find({"tags":{"$all":["story","rule"]}})

12、查询第一个标签是“MongoDB”的博客

db.blogs.find({"tags.0":"MongoDB"})

注:数组的下标是从0开始的

13、查询标签个数为3个的博客

db.blogs.find({"tags":{"$size":3}})

内嵌文档

14、查询“jack”评论过的博客

db.blogs.find({"comment.name":"Jack"})

注:因为内嵌文档“.”的问题,所以不能使用URL等

15、假设每页2篇博客,按阅读量倒序,取第二页的数据

db.blogs.find({}).skip(2).limit(2).sort({"readCount":-1})

注:skip()、limit()、sort(),分别表示略过文档的数量,匹配的数量和排序(1表示正序,-1表示倒序)


# MongoDB  # 查询  # MongoDB数据库条件查询技巧总结  # MongoDB基础之查询文档  # 常用的MongoDB查询语句的示例代码  # 详解MongoDB的条件查询和排序  # MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)  # MongoDB多条件模糊查询示例代码  # MongoDB 查询操作的实例详解  # MongoDB数据查询方法干货篇  # MongoDB的一些常用查询方法  # MongoDB实现查询、分页和排序操作以及游标的使用  # 博客  # 文档  # 李四  # 这是  # 人说  # 包含了  # 内嵌  # 不包含  # 自己的  # 都有  # 也会  # 第一个  # 都能  # 每个人  # 是从  # 它是  # 每页  # 告诉我们  # 人就  # 高性能 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Android滚轮选择时间控件使用详解  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  网站制作价目表怎么做,珍爱网婚介费用多少?  网站制作壁纸教程视频,电脑壁纸网站?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Linux系统运维自动化项目教程_Ansible批量管理实战  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  如何在阿里云购买域名并搭建网站?  如何快速配置高效服务器建站软件?  如何在万网自助建站中设置域名及备案?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  如何在香港免费服务器上快速搭建网站?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  如何在服务器上三步完成建站并提升流量?  如何获取PHP WAP自助建站系统源码?  Laravel如何升级到最新版本?(升级指南和步骤)  如何在服务器上配置二级域名建站?  网站建设保证美观性,需要考虑的几点问题!  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  开心动漫网站制作软件下载,十分开心动画为何停播?  如何批量查询域名的建站时间记录?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  EditPlus中的正则表达式 实战(4)  ,怎么在广州志愿者网站注册?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  java获取注册ip实例  Python面向对象测试方法_mock解析【教程】  如何打造高效商业网站?建站目的决定转化率  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  JavaScript如何操作视频_媒体API怎么控制播放  JS中对数组元素进行增删改移的方法总结  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  香港服务器租用费用高吗?如何避免常见误区?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  微信小程序 require机制详解及实例代码  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  如何在宝塔面板中创建新站点?  Laravel storage目录权限问题_Laravel文件写入权限设置  历史网站制作软件,华为如何找回被删除的网站?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何在橙子建站中快速调整背景颜色?  php json中文编码为null的解决办法  Swift开发中switch语句值绑定模式  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】