MongoDB में ऐसे प्रश्नों का उत्तर अक्सर आपके डेटा को असामान्य बनाना होता है। यदि आपको समूह में उपयोगकर्ताओं की केवल एक सूची की आवश्यकता है तो आप उपयोगकर्ता आईडी और . स्टोर कर सकते हैं समूह दस्तावेज़ में उपयोगकर्ता नाम। कुछ तरीकों से आप अपने डेटाबेस की संरचना उस परिणाम के अनुसार करते हैं जिसे आप स्क्रीन पर देखना चाहते हैं, बजाय इसके कि आप इसे किसी सामान्यीकृत प्रारूप में रखने की कोशिश करें।
स्पष्ट रूप से यह तभी काम करेगा जब आपकी उपयोगकर्ता समूह सूची (नामों के साथ) एक ही दस्तावेज़ में फिट हो सकती है, लेकिन आपके वर्तमान दृष्टिकोण में समूह के अधिकतम आकार से संबंधित कुछ सीमाएं भी हैं।
एक अन्य दृष्टिकोण उन समूहों को संग्रहीत करना होगा जो उपयोगकर्ता प्रत्येक 'उपयोगकर्ता' दस्तावेज़ पर एक सरणी में हैं। उस सरणी फ़ील्ड पर एक अनुक्रमणिका जोड़ें और अब आप समूह द्वारा उपयोगकर्ताओं को ढूंढ सकते हैं। यह देखते हुए कि किसी उपयोगकर्ता के समूह में सदस्यों की तुलना में कम समूहों से संबंधित होने की संभावना है, यह यहां सबसे अच्छा तरीका हो सकता है।
db.user.save({_id:"u1", name:"u1 name", groups:[{_id:"g1", name:"Group One"}, ...]});
फिर से आप समूह के नाम को इसके _id के साथ संग्रहीत कर सकते हैं ताकि आप तुरंत उन समूहों की सूची प्रदर्शित कर सकें जिनसे उपयोगकर्ता एक एकल दौर की यात्रा के साथ संबंधित है। बेशक, अगर आप किसी समूह के नाम को बदलने की अनुमति देते हैं, तो आपको नाम की इन सभी प्रतियों को ठीक करने के लिए एक पृष्ठभूमि कार्य शुरू करना होगा।
मैं आपके बजाय मोंगोडीबी आईडी जनरेटर में निर्मित का भी उपयोग करूंगा, इसमें कई वांछनीय गुण हैं।