Использование двух `этапов поиска` в совокупности, ссылающейся на одну и ту же таблицу с разными локальными полями - PullRequest
0 голосов
/ 05 февраля 2020

Возможно ли, что я могу использовать два lookup stages в single aggregate query, ссылаясь на same table, но с different local fields

Вот мой код,

const aggregate = [
        {
          $match: {
            deleted: false,
          },
        },
        {
          $lookup: {
            from: 'users',
            localField: 'user',
            foreignField: '_id',
            as: 'users',
          },
        },
        {
          $lookup: {
            from: 'products',
            localField: 'product',
            foreignField: '_id',
            as: 'products',
          },
        },
        {
          $lookup: {
            from: 'products',
            localField: 'otherProduct',
            foreignField: '_id',
            as: 'otherProducts',
          },
        },
        {
          $project: {
            _id: 1,
            users: 1,
            products: 1,
            otherProducts: 1
          },
        },
      ];

Это два поиска, которые я использовал,

{
    $lookup: {
       from: 'products',
       localField: 'product',
       foreignField: '_id',
       as: 'products',
    },
},
{
    $lookup: {
       from: 'products',
       localField: 'otherProduct',
       foreignField: '_id',
       as: 'otherProducts',
    },
}

Я получаю пустой ответ от второго otherProducts поиска .

Но, если сначала products lookup ($lookup: {from: 'products') удален удален или прокомментирован , second дает данные.

Но, если мы добавим оба поиска во второй поиск пуст.

...