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

MongoDB asymmetrisk returnering af data, første element i array returneres fuldt ud, resten med visse egenskaber udeladt?

Hvis dit underdokumentarray, du vil udelade, ikke er særlig stort. Jeg ville bare fjerne det på applikationssiden. Behandling i MongoDB betyder, at du vælger at bruge MongoDB's computerressourcer i stedet for din applikation. Generelt er din applikation nemmere og billigere at skalere, så implementering på applikationslaget er at foretrække.

Men i præcis dette tilfælde er det ikke for kompliceret at implementere det i 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
    }
  }
])

MongoDB Playground




  1. JSON serialiserer Mongodb

  2. Sådan opretter du RedisCacheManager i spring-data 2.0.x

  3. Mongoose fejl:Kan ikke opdatere __v og __v på samme tid

  4. Sådan får du flere listeværdier i et enkelt opkald i RedisTemplate af Jedis Client