MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

$progetto nell'aggregazione di $lookup

La sfida principale è che vuoi tutti i campi dal documento principale (dato che non li conosci tutti) più solo 2 dalla lista.

Questo dovrebbe farlo:

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

Passa attraverso alcune fasi ma porta a termine il lavoro :). Richiederebbe il documento corrente e solo i campi dell'elenco desiderati. Quindi rimuoverebbe dal documento corrente il suo elenco. Quindi aggiungerebbe a quello stesso documento l'elenco (poiché quello è con i campi specifici che vogliamo). Quindi aggiungerebbe quei campi al documento e infine sostituirebbe la radice con quel documento.

Guardalo qui funzionante .