📜  mongoose 查询外键 - Javascript (1)

📅  最后修改于: 2023-12-03 14:44:23.252000             🧑  作者: Mango

Mongoose 查询外键

当使用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);
    });

在该示例中,我们有两个模型:AuthorBook。通过将Book中的author属性设置为{type: Schema.Types.ObjectId, ref: 'Author'},我们可以使其成为一个外键,该外键指向Author模型。

在我们的查询中,我们使用populate('author')方法来查询Book文档,并将其替换为Author对象。通过使用exec方法将该查询执行,我们可以访问Book文档中的author属性,并从中获取name

这就是如何使用Mongoose查询外键的示例。使用populate函数查询外键可以让你轻松地在不同的文档之间建立关系,并且可以让你更容易地查询这些文档。