سؤال

لقد كنت أستخدم Google لفترة من الوقت، ولست متأكدًا مما إذا كان Spring Data MongoDB يدعم الحفظ المجمع.

أحتاج إلى حفظ مجموعة من المستندات في مونغو على أنها ذرية، إما أن يتم حفظها كلها أو لا يتم حفظ أي منها.

هل يمكن لأي شخص مشاركة رابط أو بعض نماذج التعليمات البرمجية لهذا؟

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

المحلول

عندما تقوم بالحفظ من خلال برنامج تشغيل MongoDB Java، يمكنك فقط تمرير مستند واحد إلى MongoDB.

عندما تقوم بإدراج، يمكنك تمرير عنصر واحد أو يمكنك تمرير مجموعة من العناصر.هذا الأخير هو ما سيؤدي إلى "إدراج مجمع" (أي.سيؤدي أمر الإدراج الفردي من قبل العميل إلى إدراج مستندات متعددة على الخادم).

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

لأغراض ذرية، كل إدراج مستند هو عملية منفصلة ولا توجد طريقة مدعومة لجعل MongoDB إما يقوم بإدراج الكل أو لا شيء.

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

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