首页/数据/NoSQL 速查/聚合 $lookup 关联查询
本包目录(322 条)
MongoDB99 条
Elasticsearch89 条ClickHouse56 条时序与列式28 条选型与架构50 条

聚合 $lookup 关联查询

$lookup 在管道内做左外连接:localField 与 foreignField 相等的文档放入 as 数组,替代应用侧两次查询。

NoSQL 速查数据更新于 2026-10-12
语法{ $lookup: { from, localField, foreignField, as } }
语义左外连接:无匹配时 as 为空数组
性能foreignField 侧应有索引;结果集会随匹配数量膨胀

示例

示例
db.orders.aggregate([
  { $lookup: { from: "products", localField: "sku", foreignField: "sku", as: "product" } },
  { $unwind: "$product" }
])
$unwind 紧跟 $lookup 可把单元素数组拍平成对象形式;多元素匹配时保留数组。

易错点

  • 每次 $lookup 都要扫描依据集合,from 侧连接字段无索引会拖垮整个管道

数据来源与参考

  • MongoDB Manual: $lookup
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌