MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

$projeto na agregação $lookup


O principal desafio é que você deseja todos os campos do documento principal (já que você não conhece todos eles) mais apenas 2 da lista.

Isso deve servir:
{
  $project: {
    "_id": 0,
    "document": "$$CURRENT",
    "list._id": "$$CURRENT.list._id",
    "list.name": "$$CURRENT.list.name"
  }
}, {
  $project: {
    "document.list": 0
  }
}, {
  $addFields: {
    "document.list._id": "$$CURRENT.list._id",
    "document.list.name": "$$CURRENT.list.name"
  }
}, {
  $replaceRoot: {
    newRoot: "$document"
  }
}

Ele passa por algumas etapas, mas faz o trabalho :). Levaria o documento atual e apenas os campos da lista que você deseja. Em seguida, ele removeria do documento atual sua lista. Em seguida, adicionaria a esse mesmo documento a lista (já que aquela está com os campos específicos que queremos). Em seguida, adicionaria esses campos ao documento e, por último, substituiria a raiz por esse documento.

Veja aqui funcionando .