मुझे आपकी समस्या के कई समाधान दिखाई दे रहे हैं:
शायद ही कभी अपडेट
जुड़ने से बचने के लिए, जिसे NoSQL डेटाबेस में क्लाइंट-साइड करना पड़ता है, सब कुछ एक संग्रह में डाल दें। यदि आप बहुत बार अपडेट नहीं करते हैं, तो आप कर सकते हैं
{
_id,
LastAccessDate,
HasException,
Account : {
AccountID,
UserName,
Email },
Device : {
DeviceID,
DeviceCode }
}
इसका परिणाम डुप्लिकेट डेटा में होता है, लेकिन यदि मेमोरी दक्षता से पहले प्रदर्शन (कोई जुड़ाव नहीं) आता है, तो यह शायद आपके लिए एक उपयुक्त समाधान है। चूंकि डेटा कई बार संग्रहीत किया जाता है, इसलिए सर्वर के लिए अपडेट की अधिक मांग होती है। अर्थात। ईमेल पता अपडेट करना कुछ इस तरह दिखेगा
db.myColl.update({"Account.UserName" : "User ToUpdate"}, {"$set" : {"Account.Email" : "new@email.com"} });
चूंकि अब आपको शामिल होने के लिए AccountID और DeviceID की आवश्यकता नहीं है, आप इन दो क्षेत्रों को भी छोड़ सकते हैं।
अक्सर अपडेट
जब आपके पास लगातार अपडेट होते हैं, तो एम्बेड करने के बजाय, आप संदर्भों का उपयोग कर सकते हैं। मुझे लगता है कि आपको उन्हें क्लाइंट-साइड हल करना होगा। तब आपके पास तीन संग्रह होंगे:
खाता:
{
_id,
UserName,
Email
}
डिवाइस:
{
_id,
DeviceCode
}
एसोसिएशन:
{
_id,
account : {
"$ref" : "Account",
"$id" : ... }
device : {
"$ref" : "Device",
"$id" : ... }
}
इस तरह आपके पास कोई दोहराव नहीं है, लेकिन आपको संदर्भों से निपटना होगा।