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.