MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

कास्ट टू नंबर मान NaN (प्रकार संख्या) के लिए एक परिकलित फ़ील्ड Mongoose पर पथ पर विफल रहा

रेटिंग और औसत रेटिंग दोनों ही वर्चुअल फ़ील्ड होनी चाहिए:अन्यथा, /0 डिवीजन आपके स्कीमा को क्रैश कर देगा जब आपके पास अपने संग्रह में product.ratings = 0 के साथ एक प्रविष्टि होगी। . तो मैं क्या करूँगा, सबसे पहले, वर्चुअल फ़ील्ड के लिए गेट्टर फ़ंक्शन द्वारा रेटिंग्स को परिभाषित करें:

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

मान लें कि this.ratings एक सरणी है जहां इस विशेष उत्पाद के लिए सभी रेटिंग संग्रहीत की जाती हैं। इस तरह, हर बार जब आप product.numerRatings . को एक्सेस करते हैं , उस सरणी में प्रविष्टियों की अद्यतन मात्रा प्रदर्शित की जाएगी। इसे ध्यान में रखते हुए, आपको अपनी औसत रेटिंग में बस थोड़ा सा सशर्त तर्क जोड़ने की आवश्यकता है:

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

जब तक सरणी में कोई रेटिंग नहीं है, product.averageRating किसी भी समस्याग्रस्त विभाजन का प्रयास किए बिना, 0 उत्पन्न करेगा। जिस क्षण सरणी में रेटिंग शामिल होने लगती है, एक औसत की गणना की जाएगी।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेस्टेड सरणी को एकाधिक पुश कैसे करें

  2. MongoDB - नेस्टेड फ़ील्ड के साथ समूह समग्र कुंजी

  3. मैं फ्लास्क के साथ MongoDB का उपयोग कैसे कर सकता हूं?

  4. स्पार्क को कई मोंगो संग्रहों से जोड़ना

  5. MongoDB में '$या' और '$in' प्रश्नों के साथ छँटाई कैसे काम करती है?