mongoDB 连接多个字段

N R*_*ghu 3 mongodb

我正在将 SQL 查询重写为 mongoDB。有人可以帮助我们如何使用多个连接键和条件连接两个集合,如下面的 SQL 查询所示。

SELECT S.* FROM LeftTable S
LEFT JOIN RightTable R ON S.ID =R.ID AND S.MID =R.MID WHERE R.TIM >0 AND S.MOB IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

我有下面的代码,它使用单连接键条件。如果有人可以帮助使用多个连接键和 where 子句来完成查询,我将很高兴。

db.dim.aggregate([{$lookup:{from:"dimFactsVer11",localField:"Sub", foreignField:"Type", as:"EmbedUp"}}])
Run Code Online (Sandbox Code Playgroud)

Ani*_*wal 5

目前 mongodb $lookup仅比较单个本地键和键。

但是如果你想执行像 mysql left join 这样的查询,有两个或多个字段,那么下面是解决方案。

db.getCollection('LeftTable').aggregate([
{
    $lookup:
        {
          from: "RightTable",
          localField: "ID",
          foreignField: "ID",
          as: "RightTableData"
        }
},  
{$unwind :"$RightTableData" },
{ 
     $project: { 
            mid: { $cond: [ { $eq: [ '$MID', '$RightTableData.MID' ] }, 1, 0 ] } 
        } 
},
{$match : { mid : 1}}

])
Run Code Online (Sandbox Code Playgroud)

这里$MID 是LeftTable MID 字段。