2013-02-05 20 views
5

में केवल सरणी मान लौटें क्या एक मोंगोड प्रक्षेपण में केवल संपत्ति का मूल्य लौटने का कोई तरीका है? उदाहरण के लिए, मेरे पास एक दस्तावेज़ है जिसमें एक संपत्ति है जिसका मूल्य एक सरणी है। मैं एक क्वेरी से वापसी ऑब्जेक्ट केवल सरणी होना चाहता हूं, property: [ .. ] नहीं। उदाहरण:मोंगो प्रोजेक्शन

दस्तावेज़:

db.test.insert({ name: "Andrew", 
    attributes: [ { title: "Happy"}, 
       { title: "Sad" } 
       ] 
}); 

क्वेरी:

db.test.find({name: "Andrew"},{attributes:1, "_id":0}); 

देता है कि:

{ "attributes" : [ { "title" : "Happy" }, { "title" : "Sad" } ] } 

मैं इसे सरणी पर लौटना चाहते:

[ { title: "Happy"}, 
    { title: "Sad" } 
] 

क्या ऐसा करने का कोई तरीका है? धन्यवाद

+1

असुविधाजनक रूप से MongoDB प्रक्षेपण इस सर्वर-पक्ष की तरह काम नहीं करता है, आपको इसे क्लाइंट पक्ष – Sammaye

+0

पर फ़िल्टर करना होगा, धन्यवाद, यह मेरा डर था .. –

उत्तर

3

JSON अपरिवर्तनीय को सरणी होने की अनुमति नहीं देता है इसलिए एक सामान्य क्वेरी इसकी अनुमति नहीं देती है। आप फिर भी एकत्रीकरण ढांचे के साथ ऐसा कर सकते हैं:

> db.test.remove(); 
> db.test.insert({ name: "Andrew", attributes: [ { title: "Happy"}, { title: "Sad" } ] }); 
> foo = db.test.aggregate({ $match: { name: "Andrew" } }, { $unwind: "$attributes" }, { $project: { _id: 0, title: "$attributes.title" } }); 
{ 
    "result" : [ 
     { 
      "title" : "Happy" 
     }, 
     { 
      "title" : "Sad" 
     } 
    ], 
    "ok" : 1 
} 
> foo.result 
[ { "title" : "Happy" }, { "title" : "Sad" } ] 

यह तथापि, एक कर्सर उद्देश्य यह है कि लगता है करता नहीं बनाता है।

+0

धन्यवाद, मुझे यह संदेह था कि सरणी भी वैध JSON नहीं थी । विवरण के लिए धन्यवाद! –

+0

एक सादा सरणी वैध JSON है - JSON में विभिन्न डेटा प्रकार सभी स्वयं खड़े हो सकते हैं और एक वैध JSON दस्तावेज़ बना सकते हैं। – dalgard