我创建了下面的视图。我想让所有客户都在 orderheader 上使用地址类型计费,如果不是,我仍然想要 orderheader 文档。我认为匹配阶段正在消除一些文档,因为少数文档没有地址类型计费。
我的意思是它的行为就像 INNER JOIN,而不是我想要 LEFT JOIN。努力尝试,但我得到的只是 INNER JOIN。
db.createView(
"VWOrderHeader",
"OrderHeader",
[
{
$lookup:{
from:"AddressDoc",
as: "Address",
localField: "CustomerNo",
foreignField: "CustomerNo"
}
},
{
$match:{ "Address.AddressType":/Billing/i }
},
{
$project:{
_id:0,
CustomerNo :"$CustomerNo",
ContactName:{ $ifNull:[{$arrayElemAt: [ "$Address.ContactName",0 ]},""]}
}
}
]
)}
Run Code Online (Sandbox Code Playgroud)