一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

MongoDB查询条件有哪些:范围、或查询与取反操作详解

时间:2026-07-23 17:00:50 编辑:袖梨 来源:一聚教程网

① find简介

MongoDB使用find进行查询,查询结果就是返回一个文档的子集,子集包括0个到整个集合,find的第一个参数决定了要返回那些文档,这个参数是一个文档,用于指定查询条件,空的文档{}会返回集合中所有文档,如果不指定,则默认为{}

# 语法:db.stu.find({查询条件})

例1(不指定查询条件):

MongoDB查询条件有哪些?范围、或查询与取反操作详解

例2(指定查询条件):

② 指定需要返回的键(注意:_id是默认返回的,即使不指定)

有时候我们并不想将整个文档返回,整个时候可以使用find的第二个参数来指定想要的键;

好处:这样做既可以节省传输的数据量,又能节省客户端解码文档的时间和内存消耗

# 语法:db.stu.find({查询条件}, {指定要返回哪些键})

例1(查询name为paul的文档,只返回文档的age和hobby键值对):

MongoDB查询条件有哪些?范围、或查询与取反操作详解

例2(查询name为paul的文档,但是不需要like字段):

MongoDB查询条件有哪些?范围、或查询与取反操作详解

****** 由上面两个例子可以看出,find的第二个参数,不仅可以指定返回的字段,还可以指定不需要返回的字段 ******

③ 查询条件(范围查询,或查询,取反)

查询不仅能像前面那样精确查询,还可以匹配更加复杂的条件,比如:范围,OR,或取反等

⑴ 比较操作符:"$gt", "$gte", "$lt", "$lte", "$ne"就是全部的比较操作符,分别对应,>, >=, <, <=, !=,当然也可以将其中几个组合起来使用

例1:查询_id值大于2小于5的文档

MongoDB查询条件有哪些?范围、或查询与取反操作详解

例2:查询_id值不等于3的文档

MongoDB查询条件有哪些?范围、或查询与取反操作详解

⑵mongoDB中有两种方式进行OR查询,"$in"

可以用来查询一个键的多个值;"$or"更通用一些,可以在多个键中查询任意的给定值

例1:查询name值为paul或者为wang的文档("$in")

MongoDB查询条件有哪些?范围、或查询与取反操作详解

例2:查询name值不为paul或者不为wang的文档(

"$nin"

(和"$in"是相对的,相当于互相取反)

MongoDB查询条件有哪些?范围、或查询与取反操作详解

注意:"$in"是非常灵活的,

可以指定不同的条件和值

,比如说如果一个文档在做将文档的id值转换为其name值得过程中,这时不确定其_id是1还是"paul",那么可以使用下面的方式来查询

例3: 查询_id值为1或者为paul的文档

MongoDB查询条件有哪些?范围、或查询与取反操作详解

上面我们提到有两种方式可以做OR判断,那么现在就要使用"$or","$or"和"$in"一样,都是接受一个数组,但是"$in"接受一个条件数组

例4:查询name为wang或者score为90的文档($or)

MongoDB查询条件有哪些?范围、或查询与取反操作详解

⑶ 取反,"$not"是元条件句,可以用在任何其他条件之上

例:查询name不为wang或者zhou的值

MongoDB查询条件有哪些?范围、或查询与取反操作详解

④ 特定类型查询(null值如何查询)

⑴特殊值null

我们知道mongodb文档可以包含多种类型的数据,但是null值在查询中会有特殊的表现,其不仅会返回某个键为null的文档,还会返回不存在该键的文档

例:查询age值为null的文档

如果我们像以往一样查询如下,会返回所有满足条件的结果,还会返回不存在该键的结果(

这显然不是我们想要的

MongoDB查询条件有哪些?范围、或查询与取反操作详解

那么如果要查询age为null的文档该怎么办呢?????

不仅要检查该键的值为null,还要判断该键是否存在!!!!!!!

MongoDB查询条件有哪些?范围、或查询与取反操作详解

上面使用$in看上去有点令人费解,我们还可以使用$eq,如下

MongoDB查询条件有哪些?范围、或查询与取反操作详解

⑤ 查询数组

⑴ 查询数组元素

查询数组元素和查询标量是一样的

例:查询hobby对应数组中有game的集合(和查询hobby键对一个某个值的操作一样)

MongoDB查询条件有哪些?范围、或查询与取反操作详解

⑵ 通过多个元素匹配数组 $all

例: 查询hobby对应数组中有meat和fruit的集合

MongoDB查询条件有哪些?范围、或查询与取反操作详解

⑶ 查询数组特定位置的元素所对应的集合(下标也是从0开始)

例:查询hobby集合中第1个元素为fruit的集合

MongoDB查询条件有哪些?范围、或查询与取反操作详解

⑷ 查询数组长度

例:查询hobby多对应数组长度为3的集合

MongoDB查询条件有哪些?范围、或查询与取反操作详解

⑥ 查询内嵌文档 (.语法)

例:查询msg中addr的值为456的文档

MongoDB查询条件有哪些?范围、或查询与取反操作详解

⑦ 限制返回结果(limit)

例:查询所有结果返回三个

MongoDB查询条件有哪些?范围、或查询与取反操作详解

⑧ 略过xx过(skip)

例:查询所有并略过前3个

MongoDB查询条件有哪些?范围、或查询与取反操作详解

注意:略过数据过多的话会影响性能

那么如何解决这种问题呢:

1,以某个键排序,查询第一页的数据

2,后续查询条件则使用第一页最后一个文档的排序键值为条件进行查询

⑨ 指定键排序(可以指定多个)

例:查询所有文档,并以name值正序排列(正序1,倒叙-1)

MongoDB查询条件有哪些?范围、或查询与取反操作详解

注意:有时候一个键对应的值是多种类型,这时如果对其进行排序,其排序顺序是预先定义好的:

最小值< nul l< 数字< 字符串 < 对象/文档 < 数组 < 二进制数据 < 对象ID< 布尔值 < 日期型 < 时间戳 < 正则表达式 < 最大值

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

您可能感兴趣的文章:
  • MongoDB数据库中查询语句速查手册
  • MongoDB分析查询性能的步骤和代码示例
  • MongoDB使用索引优化查询的方法
  • MongoDB分组查询、聚合查询实例
  • MongoDB 正则表达式查询之如何在 MongoDB 中实现模糊搜索与索引优化陷阱

热门栏目