MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB asymetryczny zwrot danych, pierwsza pozycja w tablicy zwrócona w całości, reszta z pominięciem pewnych właściwości?

Jeśli twoja podrzędna tablica dokumentów, którą chcesz pominąć, nie jest zbyt duża. Po prostu usunąłbym go po stronie aplikacji. Przetwarzanie w MongoDB oznacza, że ​​zamiast aplikacji używasz zasobów obliczeniowych MongoDB. Ogólnie rzecz biorąc, Twoja aplikacja jest łatwiejsza i tańsza w skalowaniu, dlatego preferowana jest implementacja w warstwie aplikacji.

Ale w tym konkretnym przypadku implementacja w MongoDB nie jest zbyt skomplikowana:

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

Plac zabaw MongoDB




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wykonaj MongoTemplate.aggregate bez pobierania wierszy

  2. MongoJS nie zwraca danych podczas wyszukiwania za pomocą wyrażeń regularnych

  3. Jak zainstalować mongoDB w systemie Windows?

  4. $funkcja tygodnia i pierwszy dzień tygodnia w agregacji

  5. Partycjonowanie rekordów w kolekcji w MongoDB