यदि आप अपनी वस्तुओं को इस तरह संग्रहीत करते हैं, तो Mongodb आप जो चाहते हैं उसे संभाल सकता है
{ score:2131, attributes: ["attr1", "attr2", "attr3"], ... }
फिर निम्न क्वेरी उन सभी आइटम्स से मेल खाएगी जिनमें att1 और attr2 हैं
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] } })
लेकिन यह इससे मेल नहीं खाएगा
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr4" ] } })
क्वेरी एक कर्सर लौटाती है, यदि आप चाहते हैं कि यह कर्सर सॉर्ट किया जाए, तो बस सॉर्ट पैरामीटर को क्वेरी में जोड़ें जैसे
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] }}).sort({score:1})
उन्नत क्वेरी पर एक नज़र डालें यह देखने के लिए कि क्या संभव है।
उपयुक्त इंडेक्स निम्नानुसार सेट किए जा सकते हैं
db.mycol.ensureIndex({attributes:1, score:1})
और आप
. का उपयोग करके प्रदर्शन जानकारी प्राप्त कर सकते हैंdb.mycol.find({ attributes: { $all: [ "attr1" ] }}).explain()
मोंगो बताते हैं कि कितनी वस्तुओं को स्कैन किया गया, ऑपरेशन में कितना समय लगा और कई अन्य आंकड़े।