MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

$project dans $lookup agrégation

Le principal défi est que vous voulez tous les champs du document principal (puisque vous ne les connaissez pas tous) plus seulement 2 de la liste.

Cela devrait le faire :

{
  $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"
  }
}

Il passe par quelques étapes mais fait le travail :). Cela prendrait le document actuel et seulement les champs de liste que vous voulez. Ensuite, il supprimerait de la doc actuelle sa liste. Ensuite, il ajouterait à ce même document la liste (puisque celle-ci contient les champs spécifiques que nous voulons). Ensuite, il ajouterait ces champs au document et, enfin, il remplacerait la racine par ce document.

Voir le travail ici .