MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pagination MongoDB pada array - Periksa apakah $slice mencapai awal array

Salah satu caranya adalah dengan menggunakan $cond operator :

Kueri :

let inputPosition = -70
let positionConverted = -position // 70
let maxNumber = 1000

db.collection.aggregate([
    {
      $project: {
        comments: {
          $slice: [ "$comments",
            { $cond: [ { $gte: [ { $size: "$comments" }, positionConverted ] }, inputPosition, maxNumber ] }, 5 ] }
      }
    }
  ])

Uji : mongoplayground

Penjelasan :

Jadi sintaks $slice adalah { $slice: [ <array>, <position>, <n> ] } dari itu jika Anda memberikan nilai yang lebih besar dari ukuran array untuk <position> maka Anda akan mendapatkan array kosong sebagai tanggapan.

Di sini kita menggunakan $cond untuk mengirim secara kondisional salah satu nilai inputPosition atau nilai maxNumber ke <position> . Selain itu, saya memiliki nilai kode keras maxNumber ke 1000 tetapi secara umum itu semua tergantung pada pilihan Anda - Anda dapat menggunakan angka yang lebih kecil, tidak masalah, angka itu harus lebih besar dari ukuran array Anda, Anda juga dapat size of array + 1 tetapi alih-alih melakukan operasi itu jika Anda yakin array Anda selalu kurang dari 1000 maka langsung gunakan 1000 .

Ref : $slice



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana menjalankan agregat di mongodb dalam kerangka laravel

  2. Simpan file di GridFS Mongo dengan ExpressJS setelah diunggah

  3. Kerjasama MongoDB pemuatan malas dengan Jackson @JsonIgnore di SpringBoot Rest Controller

  4. Mongodb - kueri total hari ini, total minggu, dan total bulan dalam satu kueri

  5. Cara mengonfigurasi spring-data-mongodb untuk menggunakan set replika melalui properti