سؤال

لقد واجهت العديد من المواقف عند استخدام MongoDB التي تتطلب استخدام DBREFs. ومع ذلك ، أود أيضًا تخزين بعض الحقول من المستند المشار إليه في DBREF نفسه.

{$ref:'user', $id:'10285102912A', username:'Soviut'}

على سبيل المثال ، قد أرغب في توفير اسم المستخدم على الرغم من الرجوع إلى مستند المستخدم. هذا من شأنه أن يوفر لي جميع فوائد نهج الوثيقة واحدة ؛ الاستعلام بشكل أسرع والتخلص من الحاجة إلى إجراء عملية إزالة التدوير اليدوي في الكود الخاص بي. بينما في نفس الوقت يتيح لي استخدام المراجع حيث تكون منطقية.

الفكرة هي أنه عند تحديث المستند المشار إليه (يقوم المستخدم بتغيير اسمه ، على سبيل المثال) ، يمكن لطبقة العمل الخاصة بي تحديث جميع المستندات التي تشير إليها تلقائيًا.

في النهاية ، أتساءل عما إذا كان من الجيد تخزين حقول إضافية على DBREFs الخاصة بي؟ هل سيكسر أي شيء؟ هل سأفقد بياناتي في كل مرة يتم فيها إعادة كتابة مرجع؟ هل يدعم السائقون مثل Pymongo؟

هل كانت مفيدة؟

المحلول

في النهاية ، أتساءل عما إذا كان من الجيد تخزين حقول إضافية على DBREFs الخاصة بي؟

قد يكون من الأنظف أن يكون لديك حقول "مخبأة" و "مرجع" منفصلة ... يعتمد الأمر على ما تشبه بياناتك.

هل سأفقد بياناتي في كل مرة يتم فيها إعادة كتابة مرجع؟

يمكنك ، ولكن ليس إذا كنت حذرا. إذا كنت تقوم بتحديث SuboBject DB Ref ، فقط تأكد من تحديث الحقول المحددة التي تريد تحديثها ، وليس الكتابة فوق المشروع الفرعي بأكمله.

تذكر أن المراجع لأنها مجرد كائنات طبيعية. مرجع قاعدة البيانات معيار ، وليس نوعًا خاصًا.

هل يدعم السائقون مثل Pymongo؟

سيظل مساعدو Dereferencing السائق يعملون. يقوم المساعدون فقط بعمل findone مع حقول $ ref و $ id.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top