MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

$project in $lookup-Aggregation

Die größte Herausforderung besteht darin, dass Sie alle Felder aus dem Hauptdokument möchten (da Sie nicht alle kennen) plus nur 2 aus der Liste.

Das sollte es tun:

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

Es durchläuft einige Phasen, erledigt aber die Arbeit :). Es würde das aktuelle Dokument und nur die gewünschten Listenfelder verwenden. Dann würde es aus dem aktuellen Dokument seine Liste entfernen. Dann würde es zu demselben Dokument die Liste hinzufügen (da diese mit den spezifischen Feldern ist, die wir wollen). Dann würde es diese Felder zum Dokument hinzufügen und schließlich den Stamm durch dieses Dokument ersetzen.

Sehen Sie, dass es hier funktioniert .