Mon go агрегация с $ lookup не работает при использовании let - PullRequest
1 голос
/ 08 февраля 2020

У меня есть такие документы в collectionA:

{ 
    "catalogId" : "17582"
}

И такие документы в collectionB:

{ 
    "product" : {
       "catalogId" : "17582"
}

Я применяю следующую агрегацию для collectionA:

{
    $lookup: {
     from: "collectionB",
     let: {
        catalogId: "$catalogId"
      },
      pipeline: [
          {
            $match: {
                "product.catalogId": "$$catalogId"
            }
          }         
      ],
      as: "something"
   }
}

Но у меня пустой результат. Кто-нибудь знает почему? Заранее спасибо.

1 Ответ

1 голос
/ 08 февраля 2020

Запрос должен быть, как показано ниже, проверьте это $ lookup для ref:

db.collectionA.aggregate([{
    $lookup: {
        from: "collectionB",
        let: {
            catalogId: "$catalogId"
        },
        pipeline: [
            {
                $match: {
                    $expr: { $eq: ["$product.catalogId", "$$catalogId"] }
                }
            }
        ],
        as: "something"
    }
}])
...