Resim

PyMongo ile Belge Silmek (delete) ve Koleksiyonu Kaldırmak (drop)

PyMongo ile Belge Silmek (delete) ve Koleksiyonu Kaldırmak (drop)

MongoDB'de veri silme, bulma işlemine benzer şekilde, bir sorgu filtresi (query) belirleyerek yapılır. Hangi belgelerin silineceğine bu filtre karar verir.

Bağlantı ve Koleksiyon

Silme işlemlerini önceki örneklerde kullandığımız kitaplar koleksiyonu üzerinde gerçekleştireceğiz:

from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
db = client['proje_db']
kitaplar_col = db['kitaplar'] 

1. Tek Bir Belge Silme (delete_one)

Filtreye uyan belgelerden yalnızca ilkini silmek için delete_one() metodu kullanılır.

Örnek: Yazar Adına Göre Silme

Daha önce eklediğimiz 'Web Geliştirme Temelleri' kitabını (yazarı 'Ece Sönmez') silelim.

# Sorgu Kriteri: Yazarı Ece Sönmez olan ilk belge
silme_filtresi = {"yazar": "Ece Sönmez"}
sonuc = kitaplar_col.delete_one(silme_filtresi)
print("--- Tek Belge Silme (delete_one) ---")
print(f"Silinen belge sayısı: {sonuc.deleted_count}")
# Kontrol: Eğer silinen belge sayısı 1 ise işlem başarılıdır.

2. Birden Çok Belge Silme (delete_many)

Filtreye uyan tüm belgeleri silmek istediğinizde delete_many() metodu kullanılır. Bu metot, silme işleminin ardından kaç belge sildiğini döndürür.

Örnek: Belirli Bir Yayınevine Ait Tüm Kitapları Silme

"Yazılım Kitapları A.Ş." yayınevine ait tüm kitapları silelim.

# Sorgu Kriteri: Yayınevi 'Yazılım Kitapları A.Ş.' olan tüm belgeler
coklu_silme_filtresi = {"yayinevi": "Yazılım Kitapları A.Ş."}
sonuc = kitaplar_col.delete_many(coklu_silme_filtresi)
print("\n--- Çoklu Belge Silme (delete_many) ---")
print(f"Toplam {sonuc.deleted_count} adet belge silindi.")
DİKKAT: Silme işleminden önce, silinecek belge sayısını find(filtre).count_documents() ile kontrol etmek iyi bir pratik ve güvenlik önlemidir.

Tüm Belgeleri Silme

Bir koleksiyondaki tüm belgeleri silmek için delete_many() metoduna boş bir filtre ({}) geçirilir:

# # Bu komut, koleksiyondaki tüm belgeleri siler
# sonuc = kitaplar_col.delete_many({})
# print(f"Tüm koleksiyondan {sonuc.deleted_count} belge silindi.") 

3. Koleksiyonu Tamamen Kaldırma (drop)

Eğer yalnızca koleksiyonun içeriğini değil, koleksiyonun kendisini (indexler ve ayarlar dahil) tamamen silmek isterseniz drop() metodunu kullanırsınız. Bu, en kesin silme işlemidir.

# 'kitaplar' koleksiyonunu veritabanından tamamen kaldır
kitaplar_col.drop()
print("\n--- Koleksiyonu Kaldırma (drop) ---")
print(f"'{kitaplar_col.name}' koleksiyonu veritabanından silindi.")

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Yazılım Nedir?

Python print()