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

Kesalahan luapan memori saat menggunakan kueri agregat dan $grup

Beberapa ide:

Anda tidak memerlukan $project pertama tahap dalam kueri. Dan, Anda dapat menyertakan { "$toDate": "$originaltimestamp" } dalam $group _id panggung , seperti di bawah ini:

"_id": { 
    "$dateToString": { 
        "format": "%Y-%m-%d", "date": { "$toDate": "$originaltimestamp" } 
    } 
}

Tentang $push: "$$ROOT" - alih-alih $$ROOT , ambil hanya bidang yang paling Anda butuhkan (atau penting). Hal ini untuk mengurangi penggunaan memori. Misalnya:

"data": { 
    $push: { 
        "subscriber_id": "$subscriber_id",
        "type": "$type",
        // other required fields...
    } 
}

Terakhir, Anda dapat mempertimbangkan untuk membatasi kueri untuk sekumpulan tanggal pada suatu waktu. Ini akan membutuhkan menjalankan kueri lebih dari sekali untuk rentang tanggal yang berbeda - tetapi saya pikir itu mungkin lebih baik secara keseluruhan. Misalnya, setiap bulan cocok dengan month bidang. Dan, month . ini dapat diindeks untuk kinerja. Ini harus menyertakan $match tahap di awal (tahap pertama) query, misalnya:

{ $match: { month: "202001" } }

Dan, ini akan meminta data untuk bulan Januari 2020.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Periksa untuk melihat apakah koleksi MongoDB dibatasi dengan driver .NET 2.0

  2. 3 Cara Memilih Baris dengan Nilai Maksimum di SQL

  3. Bagaimana cara melihat kueri yang dieksekusi oleh mongodb saya?

  4. Bagaimana cara menanyakan struktur pohon secara rekursif dengan MongoDB?

  5. findOneAndUpdate menyebabkan masalah duplikasi