📅  最后修改于: 2023-12-03 14:44:21.117000             🧑  作者: Mango
在 MongoDB 中使用 $lookup
操作符可以实现类似于 SQL 中的 JOIN
操作。它允许您在多个集合之间建立关联,并通过关联字段将相关数据合并为一个输出文档。
db.collection.aggregate([
{
$lookup:
{
from: <collection>,
localField: <field>,
foreignField: <field>,
as: <output array>
}
}
])
from
: 指定要关联的集合名称。localField
: 本集合中用于关联的字段。foreignField
: 关联集合中用于关联的字段。as
: 将关联数据存储到输出文档中的新数组字段。假设我们有两个集合:users
和 orders
。users
集合包含每个用户的详细信息,而 orders
集合包含相应用户的订单信息。我们可以使用 $lookup
操作符将这两个集合关联起来。
// Users 集合
[
{ _id: 1, name: 'John Doe' },
{ _id: 2, name: 'Alice Smith' },
{ _id: 3, name: 'Bob Johnson' }
]
// Orders 集合
[
{ _id: 1, userId: 1, product: 'iPhone' },
{ _id: 2, userId: 2, product: 'MacBook' },
{ _id: 3, userId: 2, product: 'iPad' },
{ _id: 4, userId: 3, product: 'Apple Watch' }
]
运行以下聚合查询将关联两个集合,并输出包含用户信息和订单信息的新文档:
db.users.aggregate([
{
$lookup:
{
from: 'orders',
localField: '_id',
foreignField: 'userId',
as: 'orders'
}
}
])
输出结果将如下所示:
[
{
_id: 1,
name: 'John Doe',
orders: [
{ _id: 1, userId: 1, product: 'iPhone' }
]
},
{
_id: 2,
name: 'Alice Smith',
orders: [
{ _id: 2, userId: 2, product: 'MacBook' },
{ _id: 3, userId: 2, product: 'iPad' }
]
},
{
_id: 3,
name: 'Bob Johnson',
orders: [
{ _id: 4, userId: 3, product: 'Apple Watch' }
]
}
]
以上示例将通过将订单信息添加到每个用户文档的 orders
数组中,展示了如何使用 $lookup
操作符关联两个集合的数据。
请注意,$lookup
操作符还可以与其他聚合阶段一起使用,以便在关联之前对数据进行过滤、排序和重塑等操作。
希望以上介绍对您理解 MongoDB $lookup
的使用有所帮助!