2013-10-28 9 views
18

के साथ ऐरे में उप-दस्तावेज़ खोजें I mododb पूछताछ के बारे में स्वयं को शिक्षित करने के लिए http://docs.mongodb.org/manual/reference/bios-example-collection से द बायोस उदाहरण संग्रह के साथ खेल रहा हूं। वर्ष में 1: 1975मोंगोड

मैं पुरस्कार _ id से जीता के बारे में जानकारियां प्राप्त करना चाहते हैं।

मैं कई प्रश्नों की कोशिश की, उन

bios.find({ 
    "_id" : 1, 
    "awards" : { 
     "year" : 1975 
    } 
}); 

के बीच है, लेकिन मैं उचित दस्तावेज वापस प्राप्त कभी नहीं। मैं इस दस्तावेज़ को सरणी में कैसे पुनर्प्राप्त कर सकता हूं?

उत्तर

31

आप का उपयोग करने के dot notation:

bios.find({"_id" : 1, "awards.year" : 1975 }); 

यह एक नहीं बल्कि व्यर्थ क्वेरी है क्योंकि आप भी क्वेरी में _id है, लेकिन मुझे लगता है कि है कि तथ्य के कारण है कि आप एक उदाहरण के साथ खेल रहे हैं । साथ ही, आप कह रहे हैं कि आप 1 9 67 से पुरस्कार की तलाश में हैं, लेकिन कोड 1 9 75 है।

यदि आप "awards" : { "year" : 1975 } खोजते हैं, तो mongodb पूरे उप-दस्तावेज़ awards का सटीक मिलान ढूंढेगा। इस मामले में, यह वही नहीं है जो आप चाहते हैं। इसके अलावा, awards एक सरणी है, यह हमेशा गलत होगा। यदि आप किसी सूची में एक विशिष्ट पुरस्कार दस्तावेज़ देखना चाहते हैं, तो $elemMatch जाने का तरीका होगा।

+0

वर्ष एक टाइपो था। Detailled स्पष्टीकरण के लिए बहुत बहुत धन्यवाद! –

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