MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB асиметрично връщане на данни, първият елемент в масива се връща изцяло, останалите с определени свойства са пропуснати?

Ако вашият масив от поддокументи, който искате да пропуснете, не е много голям. Просто бих го премахнал от страната на приложението. Извършването на обработка в MongoDB означава, че избирате да използвате изчислителните ресурси на MongoDB вместо вашето приложение. Обикновено вашето приложение е по-лесно и по-евтино за мащабиране, така че внедряването на приложния слой е за предпочитане.

Но в този точен случай не е твърде сложно да се внедри в 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Променете типа поле в Mongoid, без да губите данни

  2. yii2 с mongodb не работи за влизане или регистрация

  3. Удостоверяване на потребителя на флакона

  4. Сравнение на дати в mongodb

  5. Производителност на заявки за MongoDB за над 5 милиона записа