2010-10-30 14 views
57

MongoDB में, अगर मैं एक क्षेत्र "color" में एक सरणी (माना ["red", "blue"]) स्टोर करने के लिए थे, यह सूचकांक "red" और "blue" तो मैं "red" के लिए क्वेरी करता सकता है, उदाहरण के लिए, या में {"red", "blue"} एक समग्र सूचकांक है?मोंगोडीबी इंडेक्स सरणी कैसे करता है?

उत्तर

76

जब सरणी अनुक्रमणित करने की बात आती है, तो मोंगोडीबी सरणी के प्रत्येक मान को अनुक्रमणित करता है ताकि आप व्यक्तिगत वस्तुओं, जैसे "लाल" के लिए पूछ सकें। उदाहरण के लिए:

> db.col1.save({'colors': ['red','blue']}) 
> db.col1.ensureIndex({'colors':1}) 

> db.col1.find({'colors': 'red'}) 
{ "_id" : ObjectId("4ccc78f97cf9bdc2a2e54ee9"), "colors" : [ "red", "blue" ] } 
> db.col1.find({'colors': 'blue'}) 
{ "_id" : ObjectId("4ccc78f97cf9bdc2a2e54ee9"), "colors" : [ "red", "blue" ] } 

अधिक जानकारी के लिए Multikeys पर MongoDB के दस्तावेज़ की जाँच: http://www.mongodb.org/display/DOCS/Multikeys

+0

यह ("रंग" के लिए की तरह एक आंशिक सरणी के लिए खोज करने के लिए संभव है: [ "लाल", "नीले", "हरा"]), क्या मेरे पास ("रंग": ["लाल", "नीला"] की खोज हो सकती है) या मुझे उन्हें अलग-अलग करना है? –

+2

@GauravAbbi - मुझे लगता है कि काम करता है, लेकिन मोंगो केवल पहली सरणी कुंजी खोजने के लिए इंडेक्स का उपयोग करेगा। इसके बाद यह शेष कुंजी से मेल खाने वाले लोगों के लिए दस्तावेज़ों का सेट स्कैन कर रहा है। – Mnebuerquo

+0

एक कंपाउंड इंडेक्स के रूप में मल्टीकी इंडेक्स का उपयोग करने के लिए क्या विचार किए जाएंगे। उदाहरण के लिए एक सूचकांक एक मुख्य रंग और एक माध्यमिक रंग का वर्णन? –

संबंधित मुद्दे