sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb Aggregate Complex Document with Nested Lookups

Provedli jste $unwind dvakrát, takže potřebujete použít dva $group .

{
  $group: {
    _id: {
      secId: "$_id",
      fId: "$Sections.id"
    },
    Type: {
      $first: "$Type"
    },
    Name: {
      $first: "$Name"
    },
    Header: {
      $first: "$Sections.Header"
    },
    fieldItems: {
      $push: "$Sections.FieldItems"
    }
  }
},
{
  $group: {
    _id: "$_id.secId",
    Type: {
      $first: "$Type"
    },
    Name: {
      $first: "$Name"
    },
    Sections: {
      $push: {
        id: "$_id.fId",
        Header: "$Header",
        fieldItems: "$fieldItems"
      }
    }
  }
}
  1. První skupina – pro seskupení podřízených objektů. Ale Typ, Název a Záhlaví musí být nastaveno na rodičovské a podřízené pole.
  2. Druhá skupina – pro seskupení nadřazených objektů. Při seskupování dítěte získáme všechna samostatná pole. Tady to jen musíme nastavit ve správných pořadích.

Funguje Hřiště Mongo

Poznámka:Když používáte $lookup , poskytne pole. Ale jsou místa, kde to prostě uděláte jako objekt. Nevím, jestli se připojujete k osobnímu vztahu nebo ne. Pokud ano, můžete použít poziční operátor v projekci nebo arrayElemAt




  1. Extrahování, modelování a změna datového modelu pomocí mongoidu/mongodb

  2. Není autorizován pro dotaz na jmenné prostory admin.system.na mongodb

  3. jak spustíte mongo shell skript s nasazenou meteor aplikací?

  4. Vynutit mongodb k výstupu striktního JSON