Mongoose 是一个 Node.js 中的 MongoDB 驱动程序,它提供了一种简单的方式来操作 MongoDB 数据库。在使用 Mongoose 时,我们需要了解一些关键概念,包括 schema、model、instance 和 collection。
Schema
在 Mongoose 中,schema 是一个用于定义数据结构的对象。它定义了文档中包含的字段、类型、默认值、验证规则等。我们可以通过以下方式定义一个 schema:
// javascriptcn.com 代码示例 const { Schema } = require('mongoose'); const userSchema = new Schema({ name: String, age: Number, email: { type: String, required: true }, createdAt: { type: Date, default: Date.now } });
在这个例子中,我们定义了一个名为 userSchema
的 schema,它包含了四个字段:name
、age
、email
和 createdAt
。其中,name
和 age
的类型分别为 String
和 Number
,email
的类型为 String
,并且必须存在,createdAt
的类型为 Date
,并且默认值为当前时间。
Model
在 Mongoose 中,model 是一个用于与 MongoDB 数据库进行交互的类。它是由 schema 生成的。我们可以通过以下方式创建一个 model:
const { model } = require('mongoose'); const User = model('User', userSchema);
在这个例子中,我们创建了一个名为 User
的 model,它使用了之前定义的 userSchema
。
通过 model,我们可以进行各种操作,例如创建、读取、更新和删除文档。以下是一些常见的操作:
// javascriptcn.com 代码示例 // 创建文档 const user = new User({ name: 'Alice', age: 25, email: 'alice@example.com' }); user.save(); // 读取文档 const users = await User.find({ age: { $gte: 18 } }); // 更新文档 await User.updateOne({ name: 'Alice' }, { age: 26 }); // 删除文档 await User.deleteOne({ name: 'Alice' });
Instance
在 Mongoose 中,instance 是指 model 的实例,也就是文档。当我们使用 model 的 create
、save
、find
等方法时,返回的是 instance。我们可以对 instance 进行各种操作,例如获取、设置、验证等。以下是一些常见的操作:
// javascriptcn.com 代码示例 // 获取字段 const name = user.name; // 设置字段 user.age = 26; user.save(); // 验证字段 const isValid = user.validateSync();
Collection
在 MongoDB 中,collection 是指存储在数据库中的文档集合。在 Mongoose 中,每个 model 都有一个对应的 collection。我们可以通过以下方式获取一个 model 的 collection:
const collection = User.collection;
在 collection 上,我们可以进行各种操作,例如统计文档数量、创建索引等。以下是一些常见的操作:
// 统计文档数量 const count = await collection.countDocuments(); // 创建索引 await collection.createIndex({ email: 1 });
总结
在 Mongoose 中,schema、model、instance 和 collection 是非常重要的概念。了解它们的含义和使用方法,可以帮助我们更好地使用 Mongoose 操作 MongoDB 数据库。在开发中,我们需要根据具体的需求选择合适的操作方式,以提高效率和性能。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65650727d2f5e1655de5efbf