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

MongoDB से यादृच्छिक नमूना भारी विषम परिणाम लौटा रहा है

MongoDB 3.4.9 के अनुसार, आपके द्वारा देखे गए पूर्वाग्रह का कारण यह है कि $sample लगभग पूरी तरह से स्टोरेज इंजन के यादृच्छिक कर्सर कार्यान्वयन पर निर्भर करता है (देखें SERVER-19183 ) ऐसा इसलिए किया जाता है ताकि $sample संग्रह में बहुत अधिक डेटा होने पर प्रदर्शनकारी हो सकता है। हालांकि, चूंकि स्टोरेज इंजन बी-ट्री प्रकार के कार्यान्वयन का उपयोग करके दस्तावेजों को क्रमबद्ध क्रम में संग्रहीत करता है, इसलिए वास्तव में यादृच्छिक परिणाम बनाना हमेशा संभव नहीं होता है।

बेहतर $sample . के लिए वर्तमान में दो सुविधा अनुरोध हैं यांत्रिकी, अर्थात् SERVER-22069 और SERVER-22068

ऐसा कहने के बाद, यदि आपको अपने डेटा के वास्तव में निष्पक्ष नमूने की आवश्यकता है, तो अपना खुद का $sample रोल करें -समान समाधान इस बिंदु पर आगे बढ़ने का सबसे अच्छा तरीका है। कुछ इस तरह:

  1. सभी की सूची प्राप्त करें _id संग्रह में।
  2. इस सूची पर एक यादृच्छिक नमूनाकरण करें (उदाहरण के लिए पायथन के random का उपयोग करना .पसंद )।
  3. नमूना किए गए _id . का उपयोग करके सभी प्रासंगिक दस्तावेज़ प्राप्त करें , जो आपके इच्छित नमूना आकार के आधार पर उचित रूप से प्रदर्शनकारी होगा, क्योंकि _id हमेशा अनुक्रमित होता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या मोंगोडीबी एकत्रीकरण ढांचा $ समूह मूल्यों की एक सरणी लौटा सकता है?

  2. MongoDB pymongo के सभी दस्तावेज़ जल्दी से कैसे प्राप्त करें?

  3. मैं जावा ड्राइवर का उपयोग करके मोंगोडीबी के लिए $ या क्वेरी कैसे बना सकता हूं?

  4. Linux पर MongoDB सामुदायिक संस्करण 4.0 स्थापित करें

  5. MongoDB _id की सरणी में कहां चुनें?