Bu bölüm, Golang MongoDB'de belge verilerini nasıl güncelleyeceğinizi tanıtır.

MongoDB Tarafından Desteklenen Güncelleme Fonksiyonları

  • Collection.UpdateOne - Tek bir veriyi güncelle
  • Collection.UpdateMany - Veriyi toplu halde güncelle
  • Collection.ReplaceOne - Veriyi değiştir

Test Verilerini Hazırla

coll koleksiyonuna bir veri grubu ekle

docs := []interface{}{
	bson.D{
		{"item", "canvas"},
		{"qty", 100},
		{"size", bson.D{
			{"h", 28},
			{"w", 35.5},
			{"uom", "cm"},
		}},
		{"status", "A"},
	},
	bson.D{
		{"item", "journal"},
		{"qty", 25},
		{"size", bson.D{
			{"h", 14},
			{"w", 21},
			{"uom", "cm"},
		}},
		{"status", "A"},
	},
	// Diğer veriler buraya benzer şekilde devam eder...
}

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

Bir Belgeyi Güncelle

result, err := coll.UpdateOne(
	context.Background(), // Bağlam parametresini al
	bson.D{ // item=paper olan belgeyi bulmak için sorgu kriterlerini ayarla
		{"item", "paper"},
	},
	bson.D{ // Güncelleme ifadesini ayarla
		{"$set", bson.D{ // Güncellenmiş alan içeriğini ayarlamak için $set operatörünü kullan
			{"size.uom", "cm"},  // size.uom'un değerini cm olarak değiştir
			{"status", "P"}, // status'un değerini P olarak değiştir
		}},
		{"$currentDate", bson.D{  // $currentDate operatörünü kullanarak lastModified alanının değerini şuanki zamana güncelle
			{"lastModified", true},
		}},
	},
)

Sorgu kriterlerine göre bir belge eşleştir ve bu belgenin içeriğini güncelle.

İpucu: MongoDB hakkında bilgi sahibi değilseniz, lütfen MongoDB kılavuzunu okuyun.

Toplu Belgeleri Güncelle

UpdateMany fonksiyonundan farkı, eşleşen belgeleri toplu olarak güncellemesidir, eşleşme kriterlerine dayanarak.

result, err := coll.UpdateMany(
    context.Background(),
    bson.D{ // Sorgu kriterlerini belirle, qty > 50
        {"qty", bson.D{
            {"$lt", 50},
        }},
    },
    bson.D{ // Güncelleme içeriğini belirle
        {"$set", bson.D{
            {"size.uom", "cm"},
            {"status", "P"},
        }},
        {"$currentDate", bson.D{
            {"lastModified", true},
        }},
    },
)

Belgeyi Değiştir

Belirtilen içeriklere göre bir belgeyi sorgula ve belge içeriğini belirtilen içerikle değiştir.

İpucu: Bir belgenin değiştirilmesi genel değişimi ifade eder, belgedeki belirli alan değerlerinin kısmi güncellemesi değildir.

result, err := coll.ReplaceOne(
    context.Background(),
    bson.D{ // Sorgu kriterlerini belirle, item=kağıt
        {"item", "paper"},
    },
    bson.D{ // Yeni belge içeriğini belirle
        {"item", "paper"},
        {"instock", bson.A{
            bson.D{
                {"warehouse", "A"},
                {"qty", 60},
            },
            bson.D{
                {"warehouse", "B"},
                {"qty", 40},
            },
        }},
    },
)

Öncelikle, item=kağıt olan belgeyi sorguya dayalı olarak bul ve ardından onu yeni belge içeriğiyle değiştir.