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

$projekt i $lookup-sammenlægning

Hovedudfordringen er, at du vil have alle felter fra hoveddokumentet (da du ikke kender dem alle) plus kun 2 fra listen.

Dette burde gøre det:

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

Det går gennem få stadier, men får arbejdet gjort :). Det ville tage det aktuelle dokument og kun de listefelter, du ønsker. Så ville den fjerne sin liste fra det aktuelle dokument. Så ville den tilføje listen til det samme dokument (da den er med de specifikke felter, vi ønsker). Så ville den tilføje disse felter til dokumentet og til sidst erstatte roden med det dokument.

Se det fungere her .



  1. Find duplikerede webadresser i mongodb

  2. Byg denne LEFT() SQL i MongoDB-forespørgsel?

  3. Kombiner to Redis-instanser til en enkelt instans med to dbs

  4. ekskluder felter i $lookup-sammenlægning