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

Cast to Number gagal untuk nilai NaN (nomor tipe) di jalur pada bidang yang dihitung Mongoose

Rating dan averageRating harus berupa bidang virtual:jika tidak, pembagian /0 akan membuat skema mogok saat Anda memiliki entri dalam koleksi dengan product.ratings = 0 . Jadi yang akan saya lakukan adalah, pertama, menentukan peringkat dengan fungsi pengambil untuk bidang virtual:

productSchema.virtual("numberRatings").get(function() {
    return this.ratings.length;
});

Dengan asumsi bahwa this.ratings adalah larik tempat semua peringkat untuk produk tertentu ini disimpan. Dengan cara ini, setiap kali Anda mengakses product.numerRatings , jumlah entri yang diperbarui dalam larik itu akan ditampilkan. Dengan mengingat hal ini, Anda hanya perlu menambahkan sedikit logika kondisional ke Peringkat rata-rata Anda:

productSchema.virtual("averageRating").get(function() {
    return this.ratings.length > 0 ? this.totalRating / this.ratings.length : 0;
});

Selama tidak ada peringkat dalam larik, product.averageRating akan menghasilkan 0, tanpa mencoba pembagian bermasalah. Saat array mulai berisi peringkat, rata-rata akan dihitung.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dokumen unik menggunakan banyak nilai dalam Skema Mongoose

  2. Bagaimana cara melakukan upsert di Mongoose mencari dokumen yang disematkan?

  3. Cara menggunakan Liquibase-MongoDb-Spring-boot

  4. Bagaimana cara menghubungkan kembali ke MongoDB menggunakan driver C++?

  5. File konfigurasi MongoDB Yaml Opsi Tidak Dikenal:Penyimpanan