📅  最后修改于: 2023-12-03 14:44:23.252000             🧑  作者: Mango
当使用Mongoose时,有时需要查询外键。外键是一个关系模型的一部分,它用于将两个模型连接在一起。在MongoDB中,外键是通过_ref属性来定义的。
要查询外键,需要使用populate函数。populate函数允许你将Document的属性替换为对象,并使用另一个Document的值填充该属性。
以下是如何使用populate函数查询外键的示例代码:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const authorSchema = new Schema({
name: String,
age: Number,
books: [{ type: Schema.Types.ObjectId, ref: 'Book' }]
});
const bookSchema = new Schema({
title: String,
author: { type: Schema.Types.ObjectId, ref: 'Author' },
genre: String
});
const Author = mongoose.model('Author', authorSchema);
const Book = mongoose.model('Book', bookSchema);
Book.findOne({ title: 'The Hobbit' })
.populate('author')
.exec(function (err, book) {
if (err) return handleError(err);
console.log(book.author.name);
});
在该示例中,我们有两个模型:Author
和Book
。通过将Book
中的author
属性设置为{type: Schema.Types.ObjectId, ref: 'Author'}
,我们可以使其成为一个外键,该外键指向Author
模型。
在我们的查询中,我们使用populate('author')
方法来查询Book
文档,并将其替换为Author
对象。通过使用exec
方法将该查询执行,我们可以访问Book
文档中的author
属性,并从中获取name
。
这就是如何使用Mongoose查询外键的示例。使用populate函数查询外键可以让你轻松地在不同的文档之间建立关系,并且可以让你更容易地查询这些文档。