有价格收集。
[{
"_id":"...683d",
"brandId":"...f31c",
"model":"N5",
"pwId":"...1b67",
"number":50
}, {
"_id":"...683e",
"brandId":"...f31c",
"model":"base",
"pwId":"...1b67",
"number":40
}, ...]
有物品集合。
[{
"_id":"...31aa",
"pwId":"...1b67",
"brandId":"...f31c",
"model":"abc",
"series": "N5",
"bms": "yyn"
}, ...]
我想得到物品的价格,步骤是:
item.bms
,如果bms === 'yyn'
,则使用子管道-a,否则,使用子管道-b; pwId + brandId + model
,如果找到,则不再进一步;
2.2如果找不到,请尝试pwId + brandId + series
(item.series
作为price.model)
,如果找到,请不要再继续;
2.3如果仍未找到,请尝试pwId + brandId + 'base'
('base'
为price.model
); 对于第1步,我使用$facet
阶段。对于步骤2.1到2.3,我一个接一个地运行3 $lookup
,这显然是浪费资源。
如何根据2.1的结果决定是否运行2.2?