| 写法 | { $lookup: { from, let, pipeline: [...], as } } |
|---|---|
| 引用变量 | pipeline 内用 $$变量名 引用 let 定义的字段 |
| 好处 | 关联侧先过滤再返回,减少结果膨胀 |
每单带最近一条物流
每单带最近一条物流
db.orders.aggregate([
{ $lookup: {
from: "shipments",
let: { orderNo: "$orderNo" },
pipeline: [
{ $match: { $expr: { $eq: ["$orderNo", "$$orderNo"] } } },
{ $sort: { ts: -1 } },
{ $limit: 1 }
],
as: "latestShipment"
} }
])pipeline 形式内部条件常用 $expr 表达,写法更灵活但优化器能力也有限,先在测试环境验证。