MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Truyền đến Số không thành công cho giá trị NaN (số loại) tại đường dẫn trên trường được tính toán Mongoose

Cả xếp hạng và Xếp hạng trung bình phải là trường ảo:nếu không, phân chia / 0 sẽ làm hỏng giản đồ của bạn ngay khi bạn có mục nhập trong bộ sưu tập của mình với product.ratings = 0 . Vì vậy, những gì tôi sẽ làm, trước tiên, xác định xếp hạng bằng hàm getter cho một trường ảo:

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

Giả sử rằng this.ratings là một mảng lưu trữ tất cả các xếp hạng cho sản phẩm cụ thể này. Bằng cách này, mỗi khi bạn truy cập product.numerRatings , số lượng mục nhập được cập nhật trong mảng đó sẽ được hiển thị. Lưu ý điều này, bạn chỉ cần thêm một chút logic có điều kiện vào Tỷ lệ trung bình của mình:

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

Miễn là không có xếp hạng nào trong mảng, product.averageRating sẽ tạo ra một số 0, mà không cần thực hiện bất kỳ phép chia có vấn đề nào. Thời điểm mảng đó bắt đầu chứa xếp hạng, giá trị trung bình sẽ được tính.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Hiệu suất giảm bản đồ khủng khiếp

  2. Lưu, sắp xếp và truy vấn các sản phẩm, tùy chọn / thẻ và danh mục

  3. Các yếu tố cần xem xét khi chọn MongoDB cho các ứng dụng dữ liệu lớn

  4. ValueError:<Quá nhiều giá trị để giải nén>

  5. Sử dụng MongoDB, Express, Node.Js và GridFS-stream để lưu trữ các tệp video và hình ảnh