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


相关推荐: 高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  JS实现鼠标移上去显示图片或微信二维码  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  如何在自有机房高效搭建专业网站?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Laravel如何优化应用性能?(缓存和优化命令)  高性价比服务器租赁——企业级配置与24小时运维服务  如何快速生成ASP一键建站模板并优化安全性?  香港网站服务器数量如何影响SEO优化效果?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  如何快速搭建高效香港服务器网站?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel如何发送系统通知?(Notification渠道示例)  昵图网官方站入口 昵图网素材图库官网入口  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  网易LOFTER官网链接 老福特网页版登录地址  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  如何自定义建站之星模板颜色并下载新样式?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  使用C语言编写圣诞表白程序  免费视频制作网站,更新又快又好的免费电影网站?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何快速搭建高效服务器建站系统?  ,网页ppt怎么弄成自己的ppt?  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何使用Livewire构建动态组件?(入门代码)  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何快速搭建高效WAP手机网站吸引移动用户?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  如何在万网利用已有域名快速建站?  如何在万网主机上快速搭建网站?  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  如何在云服务器上快速搭建个人网站?  iOS发送验证码倒计时应用  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  详解vue.js组件化开发实践