MongoDB $in 操作符使用详解

阅读时长 5 分钟读完

什么是 MongoDB $in 操作符?

MongoDB 是一个非常流行的 NoSQL 数据库,它的查询语言也非常灵活。其中,$in 操作符可以用于查询一个字段的值是否在一个数组中。

$in 的语法

MongoDB 的 $in 操作符的语法如下:

其中,field 表示要查询的字段名称,<value1>, <value2>, ... <valueN> 表示要在这个字段上匹配的多个值。

$in 的用法

$in 操作符的用法非常简单。假设我们有如下的文档:

-- -------------------- ---- -------
-
  ------ ----
  ------- --------
  ------ --
--
-
  ------ ----
  ------- ------
  ------ --
--
-
  ------ ----
  ------- ----------
  ------ --
--
-
  ------ ----
  ------- --------
  ------ --
-
展开代码

我们可以使用 $in 操作符来查询 age 字段是否在一个数组中:

这个查询会返回所有 age 字段值是 20 或 35 的文档:

-- -------------------- ---- -------
-
  ------ ----
  ------- --------
  ------ --
--
-
  ------ ----
  ------- --------
  ------ --
-
展开代码

$in 的指导意义

$in 操作符在实际开发中有很多用处。例如,我们可以使用 $in 操作符来查询一个 collection 中符合多个条件的文档。

例如,我们可以查询所有年龄是 20 或者 35,并且名字是 Alice 或者 David 的文档:

这个查询会返回年龄是 20 或者 35,名字是 Alice 或者 David 的文档:

-- -------------------- ---- -------
-
  ------ ----
  ------- --------
  ------ --
--
-
  ------ ----
  ------- --------
  ------ --
-
展开代码

另外,$in 操作符也可以用于更新操作中。例如,我们可以使用 $in 操作符来更新名字是 Alice 或者 David 的文档:

这个操作会把名字是 Alice 或者 David 的文档的年龄都设置为 40。

$in 的注意事项

需要注意的是,$in 操作符的值是一个数组。如果数组中有大量元素,查询可能会变慢。

另外,$in 操作符也可以用于嵌套文档中的字段。例如,假设我们有如下的文档:

-- -------------------- ---- -------
-
  ------ ----
  ------- --------
  ------ ---
  ------------ -
    --------- ----------- ----------
    --------- ------------
  -
--
-
  ------ ----
  ------- ------
  ------ ---
  ------------ -
    --------- ------ -------
    --------- ------------ -------------
  -
-
展开代码

我们可以使用 $in 操作符来查询喜欢电影 Titanic 或者 Avatar 的文档:

这个查询会返回所有喜欢电影 Titanic 或者 Avatar 的文档:

-- -------------------- ---- -------
-
  ------ ----
  ------- --------
  ------ ---
  ------------ -
    --------- ----------- ----------
    --------- ------------
  -
-
展开代码

$in 示例代码

以下是使用 $in 操作符查询 MongoDB 中数据的示例代码:

-- -------------------- ---- -------
----- ----------- - -------------------------------
----- ------ - ------------------

-- ---------- ---
----- --- - ----------------------------

-- -------- ----
----- ------ - ------------

-- --- ------- ------ -- ------- -- --- ------
------------------------ ------------- ------- -
  ------------------ -----
  ---------------------- ------------ -- ---------

  ----- -- - ------------------

  -- ---- --------- --- -- -- -- --
  --------------------------------- ----- ---- ---------------------------- ----- -
    ----------------- ------
    ------------------ --- --------- ----------
    ------------------
  ---

  ---------------
---
展开代码

以上代码会查询所有 age 字段值是 20 或 35 的文档,并打印出来。你可以根据自己的需求修改代码。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c12ab8314edc26848c569f

纠错
反馈

纠错反馈