मुझे यादृच्छिक रूप से संग्रह से एक दस्तावेज़ लेने की आवश्यकता है (वैकल्पिक रूप से - यादृच्छिक रूप से स्थित "विंडो" से लगातार दस्तावेजों की एक छोटी संख्या)। मुझे दो समाधान मिल गए हैं: 1 और 2। पहला अस्वीकार्य है क्योंकि मैं बड़े संग्रह आकार की अपेक्षा करता हूं और दस्तावेज़ आकार को कम करना चाहता हूं। दूसरा अप्रभावी लगता है (मुझे skip
ऑपरेशन की जटिलता के बारे में निश्चित नहीं है)। और here कोई निर्दिष्ट सूचकांक के साथ किसी दस्तावेज़ को क्वेरी करने का उल्लेख पा सकता है, लेकिन मुझे नहीं पता कि यह कैसे करना है (मैं सी ++ ड्राइवर का उपयोग कर रहा हूं)।MongoDB: एक यादृच्छिक दस्तावेज़ से पूछने का सबसे प्रभावी तरीका क्या है?
क्या समस्या के अन्य समाधान हैं? सबसे कुशल कौन सा है?
मोंगोडीबी टिकट ट्रैकर में एक संग्रह से यादृच्छिक आइटम प्राप्त करने के लिए एक [सुविधा अनुरोध] है [https://jira.mongodb.org/browse/SERVER-533)। यदि मूल रूप से लागू किया गया है, तो यह संभवतः सबसे कुशल विकल्प होगा। (यदि आप सुविधा चाहते हैं, तो इसे वोट दें।) –
इस सवाल को स्टैक ओवरफ़्लो पर कई रूपों में पूछा गया है। सबसे लोकप्रिय सवाल है [मोंगोडीबी से यादृच्छिक रिकॉर्ड] (http://stackoverflow.com/questions/2824157/random-record-from-mongodb) - इसमें अच्छे प्रतिक्रियाएं हैं। उस ने कहा, मुझे लगता है कि सवाल के बारे में सोचने का सबसे अच्छा तरीका एक यादृच्छिक दस्तावेज़ प्राप्त करने के बारे में सोचना नहीं है, बल्कि, परिणाम सेट को यादृच्छिक बनाना। देखें [मोंगो में यादृच्छिक रूप से परिणाम सेट ऑर्डर करना] (http://stackoverflow.com/questions/8500266/ordering-a-result-set-randomly-in-mongo) इसके लिए। –