mongodb条件阶段或聚合中的条件管道

时间:2018-02-26 13:15:10

标签: mongodb

有价格收集。

[{  
   "_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"
}, ...]

我想得到物品的价格,步骤是:

  1. 检查item.bms,如果bms === 'yyn',则使用子管道-a,否则,使用子管道-b;
  2. 让我们看一下子管道-a,子管道-b可能类似。 2.1匹配价格与三个条件pwId + brandId + model,如果找到,则不再进一步; 2.2如果找不到,请尝试pwId + brandId + seriesitem.series作为price.model),如果找到,请不要再继续; 2.3如果仍未找到,请尝试pwId + brandId + 'base''base'price.model);
  3. 结合sub-pipeline-a和sub-pipeline-b的结果。
  4. 对于第1步,我使用$facet阶段。对于步骤2.1到2.3,我一个接一个地运行3 $lookup,这显然是浪费资源。

    如何根据2.1的结果决定是否运行2.2?

0 个答案:

没有答案