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

Asymetrický návrat dat MongoDB, první položka v poli vrácena celá, zbytek s vynecháním určitých vlastností?

Pokud pole vnořených dokumentů, které chcete vynechat, není příliš velké. Jen bych to odstranil na straně aplikace. Provádění zpracování v MongoDB znamená, že se rozhodnete používat výpočetní zdroje MongoDB místo vaší aplikace. Obecně je vaše aplikace snadněji a levněji škálovatelná, takže implementace na aplikační vrstvě je vhodnější.

Ale v tomto přesném případě není příliš složité jej implementovat do MongoDB:

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
    }
  }
])

Hřiště MongoDB




  1. Mongo aktualizace subdocs

  2. Jak spárovat spojené sbírky pomocí Laravel a MongoDB?

  3. Data jarní relace Redis – Získejte platné relace, aktuální uživatel z obchodu Redis

  4. Jaký je nejlepší způsob ukládání dat v MongoDB?