.aggregate()
विधि हमेशा Objects
लौटाती है कोई फर्क नहीं पड़ता कि आप क्या करते हैं और वह बदल नहीं सकता।
अपने उद्देश्य के लिए आप शायद .distinct()
. का उपयोग करना बेहतर समझते हैं इसके बजाय, जो केवल विशिष्ट मानों की एक सरणी लौटाता है:
db.users.distinct("emails.address");
वास्तव में आपका वांछित आउटपुट कौन सा है:
["[email protected]","[email protected]","[email protected]"]
अगर आप वाकई .aggregate()
. का इस्तेमाल करना चाहते हैं तो पोस्ट प्रोसेसिंग में अभिव्यक्ति के "बाहर" होने के लिए केवल मूल्यों के लिए परिवर्तन की आवश्यकता होती है। और आपको $unwind
. का भी उपयोग करना चाहिए इस तरह की सरणियों से निपटने के दौरान।
आप इसे JavaScript .map()
. के साथ कर सकते हैं उदाहरण के लिए:
db.users.aggregate([
{ "$unwind": "$emails" },
{ "$group": { "_id": "$emails.address" } }
]).map(function(el) { return el._id })
जो समान आउटपुट देता है, लेकिन .map()
सर्वर के बजाय ट्रांसफ़ॉर्मेशन क्लाइंट साइड करता है।