هذا الفصل يقدم كيفية تحديث بيانات المستند في MongoDB باستخدام Golang.

وظائف التحديث المدعومة من قبل MongoDB

  • Collection.UpdateOne - تحديث قطعة بيانات واحدة
  • Collection.UpdateMany - تحديث البيانات بالدُفعات
  • Collection.ReplaceOne - استبدال البيانات

تحضير البيانات التجريبية

أدخل دُفعة بيانات في مجموعة الـ coll

docs := []interface{}{
	bson.D{
		{"item", "canvas"},
		{"qty", 100},
		{"size", bson.D{
			{"h", 28},
			{"w", 35.5},
			{"uom", "cm"},
		}},
		{"status", "A"},
	},
	...
}

result, err := coll.InsertMany(context.Background(), docs)

تحديث مستند

result, err := coll.UpdateOne(
	context.Background(), // الحصول على معامل السياق
	bson.D{ // تعيين معايير الاستعلام للعثور على المستند بـ item=paper
		{"item", "paper"},
	},
	bson.D{ // تعيين تعبير التحديث
		{"$set", bson.D{ // استخدام عامل $set لتعيين محتوى الحقل المحدث
			{"size.uom", "cm"},  // تغيير قيمة size.uom إلى cm
			{"status", "P"}, // تغيير قيمة الحالة إلى P
		}},
		{"$currentDate", bson.D{  // استخدام عامل $currentDate لتحديث قيمة حقل lastModified إلى الوقت الحالي
			{"lastModified", true},
		}},
	},
)

تطابق مستند استنادًا إلى معايير الاستعلام، ثم قم بتحديث محتوى هذا المستند.

نصيحة: إذا كنت غير ملم بـ MongoDB، يرجى قراءة دليل MongoDB.

تحديث الوثائق بشكل جماعي

يختلف UpdateMany عن وظيفة UpdateOne في أن UpdateMany يقوم بتحديث الوثائق المتطابقة بشكل جماعي بناءً على معايير التطابق.

result, err := coll.UpdateMany(
	context.Background(),
	bson.D{ // قم بتعيين معايير الاستعلام، الكمية > 50
		{"qty", bson.D{
			{"$lt", 50},
		}},
	},
	bson.D{ // قم بتعيين محتوى التحديث
		{"$set", bson.D{
			{"size.uom", "سم"},
			{"status", "قيد التشغيل"},
		}},
		{"$currentDate", bson.D{
			{"lastModified", true},
		}},
	},
)

استبدال وثيقة

قم بالاستعلام عن وثيقة محددة بناءً على معايير الاستعلام واستبدال محتوى الوثيقة بالمحتوى المحدد.

نصيحة: يشير استبدال الوثيقة إلى الاستبدال الشامل، وليس التحديث الجزئي لقيم الحقول المعينة في الوثيقة.

result, err := coll.ReplaceOne(
	context.Background(),
	bson.D{ // قم بتعيين معايير الاستعلام، العنصر=ورق
		{"item", "ورق"},
	},
	bson.D{ // قم بتعيين محتوى الوثيقة الجديد
		{"item", "ورق"},
		{"instock", bson.A{
			bson.D{
				{"warehouse", "أ"},
				{"qty", 60},
			},
			bson.D{
				{"warehouse", "ب"},
				{"qty", 40},
			},
		}},
	},
)

أولاً، استنادًا إلى معايير الاستعلام، ابحث عن الوثيقة بعنصر=ورق، ثم قم بتبديلها بمحتوى الوثيقة الجديد.