在 MongoDB 中,文档之间的关系通常通过引用来建立,这就需要使用外键来实现。而在 Mongoose 中,我们可以使用 populate()
方法来实现外键的查询和映射。本文将介绍如何在 Mongoose 中映射 MongoDB 的外键关系,并提供详细的示例代码。
什么是外键
在关系型数据库中,外键是用来建立两个表之间关联的一种机制。在 MongoDB 中,由于没有关系型数据库的表结构,因此需要通过引用来建立文档之间的关系。在一个文档中引用另一个文档的字段就称为外键。
在 Mongoose 中建立外键关系
在 Mongoose 中,我们可以使用 ref
关键字来指定外键关联的模型。例如,我们有一个 User
模型和一个 Post
模型,我们可以在 Post
模型中定义一个 author
字段来引用 User
模型:
// javascriptcn.com 代码示例 const mongoose = require('mongoose'); const Schema = mongoose.Schema; const UserSchema = new Schema({ name: String, email: String, }); const PostSchema = new Schema({ title: String, content: String, author: { type: Schema.Types.ObjectId, ref: 'User' }, }); const User = mongoose.model('User', UserSchema); const Post = mongoose.model('Post', PostSchema);
在上面的代码中,我们定义了两个模型 User
和 Post
,并在 Post
模型中定义了一个 author
字段,类型为 Schema.Types.ObjectId
,并使用 ref
关键字指定其关联的模型为 User
。
查询外键关联的文档
在使用外键关联文档后,我们可以使用 populate()
方法来查询关联的文档。例如,我们可以查询所有 Post
文档,并将其 author
字段关联的 User
文档一并查询出来:
Post.find().populate('author').exec((err, posts) => { if (err) { console.error(err); } else { console.log(posts); } });
在上面的代码中,我们使用 populate()
方法来查询 Post
文档,并将其 author
字段关联的 User
文档一并查询出来。查询结果将会是一个包含所有 Post
文档和其 author
字段关联的 User
文档的数组。
总结
在 Mongoose 中使用外键关联文档,我们可以使用 ref
关键字来指定关联的模型,并使用 populate()
方法来查询关联的文档。本文提供了详细的示例代码,以帮助读者更好地理解和应用这些概念。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6555c3d4d2f5e1655d026917