मैं मोंगो ऐसी है कि मैं पहली बार क्षेत्र के लिए प्राथमिकता देना चाहते हैं और उसके बाद दूसरे क्षेत्र में एक प्रश्न है।एकाधिक क्षेत्रों के वर्गीकरण में मोंगो डीबी
मैं ऐसा है कि
db.col.find({category: A}).sort({updated: -1, rating: -1}).limit(10).explain()
तो मैं निम्नलिखित सूचकांक
db.col.ensureIndex({category: 1, rating: -1, updated: -1})
यह कई वस्तुओं के रूप में सिर्फ जुर्माना स्कैनिंग काम के रूप में यानी 10
जरूरत बनाई क्वेरी करने के लिए है लेकिन अब कहते हैं कि मैं
db.col.find({category: { $ne: A}}).sort({updated: -1, rating: -1}).limit(10)
क्वेरी करने की आवश्यकता है
तो मैं निम्नलिखित सूचकांक
db.col.ensureIndex({rating: -1, updated: -1})
बनाया है, लेकिन इस पूरे दस्तावेज़ की स्कैनिंग की ओर जाता है और जब मैं
db.col.ensureIndex({ updated: -1 ,rating: -1})
बनाने यह दस्तावेज़ की कम संख्या
मैं सिर्फ पूछना चाहता हूँ को स्कैन करता है कई क्षेत्रों में सॉर्ट करने के बारे में स्पष्ट होना और ऐसा करने पर संरक्षित करने का आदेश क्या है। मोंगो-डीबी दस्तावेजों को पढ़कर यह स्पष्ट हो जाता है कि जिस क्षेत्र पर हमें सॉर्टिंग करने की आवश्यकता है वह अंतिम क्षेत्र होना चाहिए। तो यह मामला है कि मैंने उपरोक्त मेरी $ ne क्वेरी में माना था। क्या मैं गलत हूं?
कैसे इस सवाल का जवाब है सॉर्ट जाएगा में' नाम 'रखने की कोशिश? आप अभी भी यह सुनिश्चित नहीं कर सकते कि आपको "रेटिंग अवरोही, अद्यतन desc" क्रम में क्रमबद्ध किया गया है, "अपडेट किया गया desc, रेटिंग desc" – jobermark
@jobermark मूल प्रश्न में क्वेरी मानदंड 'श्रेणी' है जो कि यौगिक सॉर्ट ऑर्डर ' {अद्यतन: -1, रेटिंग: -1} '। सूचकांक में चाबियों का क्रम (और दिशा) महत्वपूर्ण है; सुझाया गया सूचकांक '{रेटिंग: -1, अपडेटेड -1 -1}' द्वारा क्रमबद्ध 'सामग्री' पर एक खोज का कुशलतापूर्वक समर्थन नहीं करेगा। यदि आप चालक में कंपाउंड सॉर्ट मानों में हेरफेर कर रहे हैं तो ऑर्डरिंग सुनिश्चित करने के लिए ऑर्डर किए गए हैश/डिक्शनरी का उपयोग करें। अधिक जानकारी के लिए [मल्टीओडीबी दस्तावेज में [एकाधिक फ़ील्ड पर सॉर्ट करें] देखें (https://docs.mongodb.org/manual/tutorial/sort-results-with-indexes/#sort-on-multiple-fields)। – Stennie