了解猫鼬中的填充

问题描述

我有名为 Book 和 Author 的集合。几位作者可以写一本书。所以集合看起来像这样:

Book: {
id: objectId,name: string,price: number,authors: [objectId]
}

Author: {
id: objectId,nameL string
}

Book collection的author字段是一个author objectId数组。 当我想获取一些书籍及其作者时,我将获取作者 objectId 数组。然后,对于每个 objectId 元素,我将获取作者。 另一种方法是使用“填充”。但我不知道这种方式是否类似于关系数据库中的“加入”?它比第一种方式有更好的性能吗?

解决方法

我假设您将拥有每位作者的一些书籍数据。我没有使用 populate(因为 populate 在 mongoose 中),而是在 mongodb 中使用了 $lookup,它也更像是加入关系数据库。这是文档

https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#use-lookup-with-an-array