sql >> Database >  >> NoSQL >> MongoDB

MongoDB assymetrische retour van gegevens, eerste item in array volledig geretourneerd, de rest met weggelaten bepaalde eigenschappen?

Als uw subdocumentarray die u wilt weglaten, niet erg groot is. Ik zou het gewoon aan de applicatiekant verwijderen. Verwerking in MongoDB betekent dat u ervoor kiest om de rekenbronnen van MongoDB te gebruiken in plaats van uw toepassing. Over het algemeen is uw applicatie eenvoudiger en goedkoper op te schalen, dus implementatie op de applicatielaag heeft de voorkeur.

Maar in dit exacte geval is het niet te ingewikkeld om het in MongoDB te implementeren:

db.collection.aggregate([
  {
    $addFields: { // keep the first element somewhere
      first: { $arrayElemAt: [ "$mainArray", 0] }
    }
  },
  {
    $project: { // remove the subdocument field
      "mainArray.array": false
    }
  },
  {
    $addFields: { // join the first element with the rest of the transformed array
      mainArray: {
        $concatArrays: [
          [ // first element
            "$first"
          ],
          { // select elements from the transformed array except the first
            $slice: ["$mainArray", 1, { $size: "$mainArray" }]
          }
        ]
      }
    }
  },
  {
    $project: { // remove the temporary first elemnt
      "first": false
    }
  }
])

MongoDB-speeltuin




  1. Naamruimten in Redis?

  2. Hoe meerdere velden in een verzameling samenvoegen?

  3. Voor- en nadelen van MongoDB?

  4. MongoDB - Hoe verschillende waarden te vinden op basis van een gedeeltelijke string