- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
update)Veriler nadiren sabittir. MongoDB'de var olan bir belgenin
alanlarını değiştirmek için PyMongo'nun update_one()
ve update_many() metotları kullanılır.
Güncelleme işlemleri üç ana bölümden oluşur:
Filtre (Query): Hangi belgelerin güncelleneceğini belirler.
Güncelleme Operatörü: Hangi alanın nasıl
değiştirileceğini belirler (örneğin, $set,
$inc).
Değerler: Alanlara atanacak yeni değerler.
Güncelleme işlemlerini kitaplar
koleksiyonu üzerinde gerçekleştireceğiz:
from pymongo import MongoClient
client = MongoClient('mongodb://localhost:27017/')
db = client['proje_db']
kitaplar_col = db['kitaplar']
update_one)Filtreye uyan belgelerden yalnızca ilkini güncellemek için
update_one() metodu kullanılır.
Örnek: $set
Operatörü Kullanımı
En yaygın güncelleme operatörü $set'tir.
Bu operatör, belirtilen alanı/alanları yeni değerle değiştirir.
Eğer alan yoksa, onu oluşturur.
# 1. Filtre: Yazar adı 'Ahmet Bilgin' olan ilk kitabı bul
filtre = {"yazar": "Ahmet Bilgin"}
# 2. Güncelleme Operatörü: Yayınevini değiştir, yeni bir alan (indirim) ekle
guncelleme = {
"$set": {
"yayinevi": "Yeni Dönem Yayınları",
"indirim": True # Yeni bir alan eklendi
}
}
sonuc = kitaplar_col.update_one(filtre, guncelleme)
print("--- Tek Belge Güncelleme ($set) ---")
print(f"Eşleşen belge sayısı: {sonuc.matched_count}")
print(f"Güncellenen belge sayısı: {sonuc.modified_count}")
# Sonucu kontrol etmek için find_one() kullanabilirsiniz.update_many)Filtreye uyan tüm belgeleri aynı anda güncellemek için
update_many() metodu kullanılır.
Örnek: $inc
Operatörü Kullanımı
$inc (Increment) operatörü, sayısal
bir alanın değerini belirtilen miktarda artırmak veya azaltmak
için kullanılır.
Python
# 1. Filtre: Yılı 2023'ten büyük veya eşit (>=) olan tüm kitapları bulcoklu_filtre = {"yil": {"$gte": 2023}}# 2. Güncelleme Operatörü: Stok miktarını 5 artırcoklu_guncelleme = {"$inc": {"stok": 5}}sonuc = kitaplar_col.update_many(coklu_filtre, coklu_guncelleme)print("\n--- Çoklu Belge Güncelleme ($inc) ---")print(f"Toplam {sonuc.matched_count} belge bulundu.")print(f"Toplam {sonuc.modified_count} belge güncellendi (Stok 5 artırıldı).")
Operatör |
Amacı |
|
Belirtilen bir alanı belgeden tamamen kaldırır (siler). |
|
Bir dizi (array) alanına yeni bir öğe ekler. |
|
Bir dizi (array) alanından, filtreye uyan tüm öğeleri siler. |
Örnek: $unset ile Alan Kaldırma
Güncellediğimiz belgedeki indirim
alanını kaldıralım:
# Filtre: indirim alanı olan belgeleri bul
unset_filtre = {"indirim": True}
# Güncelleme: indirim alanını kaldır
unset_guncelleme = { "$unset": { "indirim": "" # Değer boş bırakılır }}
kitaplar_col.update_one(unset_filtre, unset_guncelleme)
print("\n--- Alan Kaldırma ($unset) ---")
print("'indirim' alanı ilk eşleşen belgeden kaldırıldı.")
Yorumlar
Yorum Gönder