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

Bagaimana mengurutkan array dalam koleksi

Dengan asumsi item dalam products Anda array unik, tidak ada dukungan sisi server yang mudah untuk mempertahankan array ini dalam urutan yang diurutkan seperti pada MongoDB 2.4. Pilihan terbaik Anda mengingat array bersarang adalah mengurutkan array dalam logika aplikasi Anda sebagaimana mestinya (yaitu pada sisipan/pembaruan, atau pada pengambilan/tampilan).

Pertimbangan Pemodelan Data

Jika Anda perlu melakukan banyak manipulasi entri array bersarang, Anda harus mempertimbangkan untuk meratakan model data Anda agar lebih mudah digunakan. Tujuan desain Anda dengan MongoDB adalah memiliki model data yang sesuai untuk kasus penggunaan aplikasi Anda dengan keseimbangan kinerja yang dapat diterima antara kemudahan penyisipan/pembaruan/kueri. Anda pasti tidak harus memodelkan semuanya dalam satu koleksi/kueri jika tidak masuk akal untuk melakukannya, dan Anda harus siap untuk mendenormalisasi (menggandakan) data. Untuk hubungan banyak-ke-banyak seperti produk <=> kategori, biasanya untuk menyematkan dan mendenormalisasi entitas mana pun yang lebih jarang diperbarui (misalnya, menyematkan kategori dalam produk).

Array yang diurutkan dan dibatasi (item non-unik)

Jika Anda ingin mempertahankan array dalam urutan yang diurutkan dan item tidak unik, MongoDB 2.4 memiliki opsi untuk $push ke array yang diurutkan tetapi ini harus digunakan bersama dengan irisan (batas array). Jika Anda $push entri identik ke array yang diurutkan Anda akan berakhir dengan duplikat (jadi ini mungkin bukan yang Anda cari).

Contoh pembaruan, dengan asumsi page dalam contoh Anda adalah nama koleksi:

db.page.update(
    // Query
    { "_id": "56rgt46rt54h68rt4h6" },

    // Update sorted array
    // NB: referring by array index position 0, as there isn't a named reference
    { $push : {
        "categories.0.products" : { 

            // List of new elements to push
            $each : [
                { "name" : "E", "pos": 3 }
            ],

            // Sort by pos (ascending)
            $sort : { "pos" : 1 },

            // Maximum number of array elements (required for $sort)
            $slice : -100
        }
    }}
)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Memperbarui Array Bersarang Luwak

  2. mongodb join-like query dengan dua koleksi dan klausa where

  3. Cara menanyakan/memperbarui sub dokumen di MongoDB menggunakan driver C#

  4. Mengurutkan mongo pada kondisi yang diperhitungkan

  5. JavaScript menumpuk dari memori saat streaming file besar