# 嵌套文档与数组的查询

URL: https://caijiao.org/mongodb/03-query/04-nested-array
Source: docs/mongodb/03-query/04-nested-array.md
Description: 本章节介绍如何在 MongoDB 中查询嵌套文档和数组字段，帮助用户处理复杂数据结构的检索需求。

[MongoDB](/mongodb/) 支持存储复杂的嵌套文档和数组类型，查询时需要使用点（`.`）符号和数组操作符来访问内部字段。

## 查询嵌套文档

通过点符号访问嵌套字段。例如，查询地址中城市为“北京”的文档：

```js
db.users.find({ "address.city": "北京" })
````

其中 `address` 是嵌套文档，`city` 是其字段。

## 查询数组元素

1. **查询数组包含指定值的文档**

查询 `tags` 数组中包含 `"mongodb"` 的文档：

```js
db.articles.find({ tags: "mongodb" })
```

2. **查询数组中满足条件的元素**

查询数组 `scores` 中有大于 90 的元素的文档：

```js
db.students.find({ scores: { $gt: 90 } })
```

3. **使用 `$elemMatch` 查询多个条件**

查询数组中有元素同时满足多个条件：

```js
db.students.find({
  scores: { $elemMatch: { $gt: 80, $lt: 90 } }
})
```

4. **查询数组长度**

查询数组长度等于 3 的文档：

```js
db.students.find({ scores: { $size: 3 } })
```

---

掌握嵌套文档和数组的查询方法，可以有效处理复杂数据结构，满足多样化的业务需求。
