# 使用 Mongoose ODM

URL: https://caijiao.org/mongodb/09-integration/02-mongoose
Source: docs/mongodb/09-integration/02-mongoose.md
Description: 本章节介绍 Mongoose ODM 的基本使用，帮助开发者在 Node.js 环境中更方便地操作 MongoDB。

Mongoose 是一个基于 Node.js 的 MongoDB 对象建模工具，提供数据模式定义、验证和业务逻辑封装。

## 安装

使用 npm 安装 Mongoose：

```bash
npm install mongoose
````

## 连接数据库

```js
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/myDatabase', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
})
.then(() => console.log('MongoDB connected'))
.catch(err => console.error(err));
```

## 定义 Schema 和模型

```js
const userSchema = new mongoose.Schema({
  name: { type: String, required: true },
  age: Number,
  email: { type: String, unique: true }
});

const User = mongoose.model('User', userSchema);
```

## CRUD 操作示例

### 创建文档

```js
const user = new User({ name: 'Bob', age: 30, email: 'bob@example.com' });
await user.save();
```

### 查询文档

```js
const users = await User.find({ age: { $gt: 20 } });
```

### 更新文档

```js
await User.updateOne({ name: 'Bob' }, { $set: { age: 31 } });
```

### 删除文档

```js
await User.deleteOne({ name: 'Bob' });
```

## 特性

* 支持数据验证和中间件。
* 支持虚拟属性和方法。
* 支持复杂查询和聚合操作。
* 易于维护和扩展。

---

Mongoose 通过丰富的功能和简洁的 API，简化了 Node.js 应用中对 [MongoDB](/mongodb/) 的操作，提升开发效率。
