Önceki yazımızda MongoDB’de nasıl kayıt güncelleyebileceğimizi görmüştük. Bu yazıda da nasıl kayıt silineceği göreceğiz.

MongoDB Java driver içerisinde kayıt silmek amacı ile deleteOne() ve deleteMany() metodu bize sunulmuş. İsimlerinden anlaşılacağı gibi deleteOne metodu sadece bir kayıt silmek deleteMany metodu da birden fazla kayıt silmek amacı ile kullanılır. Şimdi iki metodu da örnekleyelim.

Önceki yazılarda da yaptığımız gibi öncelikle üzerinde çalışacağımız kaydı görelim:

{
    "_id": "57c19b523e9b4210f735327f",
    "address": {
      "street": "2 Avenue",
      "zipcode": "10077",
      "building": "1480",
      "coord": [
        -73.9557413,
        40.7720266
      ]
    },
    "borough": "Manhattan",
    "cuisine": "American",
    "grades": [
      {
        "date": "27-08-2016",
        "grade": "A",
        "score": 14
      },
      {
        "date": "27-08-2016",
        "grade": "B",
        "score": 15
      }
    ],
    "name": "Vella",
    "restaurant_id": "41704620"
}

Veritabanında cuisine alanı American olan sadece bir kayıt var. Şimdi benim bu kaydı silmek için kullanacağım şu şekildedir:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package io.github.ilkgunel.mongodb;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import static java.util.Arrays.asList;
import java.util.Locale;
import org.bson.Document;

/**
 *
 * @author ilkaygunel
 */
public class RemovingData {
    public static void main(String[] args) {
        MongoClient mongoClient = null;
        try {
            mongoClient = new MongoClient("localhost", 27017);
            MongoDatabase database = mongoClient.getDatabase("MongoDB");
            
            database.getCollection("Records").deleteOne(new Document("cuisine","American"));

        } catch (Exception e) {
            System.out.println("An Error Occured! Error is:" + e);
        } finally {
            mongoClient.close();
        }
    }
}

Kod içerisinde deleteOne metoduna bir döküman geçirdik ve bu dökümanda cuisine keyine American valuesunu atadık. Kod çalıştığında veritabanında karşısına cuisine alanı American olup ilk gelen kaydı silecek.

Kayıt silmeden önce veritabanımız kaydın şekli şöyle:

Kaydı sildikten sonra ise şöyle:

Gördüğümüz gibi kayıt sayımız 5’den 4’e indi ve 2. sıradaki kayda cuisine alanı Russian olan kayıt geçti.

Şimdi de deleteMany metodunu örnekleyelim. Veritabanında cuisine alanı Italian olan 2 kayıt mevcut. deleteMany metodununa cuisine keyine Italian değerini verdiğim bir döküman atarsak 2 kayıt da silinir. Kodumuz şöyle:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package io.github.ilkgunel.mongodb;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import static java.util.Arrays.asList;
import java.util.Locale;
import org.bson.Document;

/**
 *
 * @author ilkaygunel
 */
public class RemovingData {
    public static void main(String[] args) {
        MongoClient mongoClient = null;
        try {
            mongoClient = new MongoClient("localhost", 27017);
            MongoDatabase database = mongoClient.getDatabase("MongoDB");
            
            database.getCollection("Records").deleteMany(new Document("cuisine","Italian"));

        } catch (Exception e) {
            System.out.println("An Error Occured! Error is:" + e);
        } finally {
            mongoClient.close();
        }
    }
}

MongoClient’a dönüp baktığımızda kayıt sayısının 2’ye indiğini görüyoruz.

MongoDB’de eğer istenirse bir seferde tüm kayıtlar silinebilinir. Bunun yapılması için deleteMany metoduna boş bir döküman geçirilmesi yeterlidir. Örnek kodumuzu şu şekilde güncellersek amacımıza uygun hale gelir:

//database.getCollection("Records").deleteMany(new Document("cuisine","Italian"));
database.getCollection("Records").deleteMany(new Document());

Kodun çalıştırılması akabinde durum şöyledir:

Bu kodun işletilmesi akabinde tüm kayıtlar silinmiş olmasına rağmen Collection yerinde durmaktadır. Eğer tüm kayıtlarla beraber Collection’ı da silmek istersek drop() metodunu kullanabiliriz. Kodumuzu şu şekilde düzenlemeliyiz:

//database.getCollection("Records").deleteMany(new Document("cuisine","Italian"));
//database.getCollection("Records").deleteMany(new Document());
database.getCollection("Records").drop();

Collections’ın altındaki artık hiçbir Collection görünmüyor.

Bu yazıda da bu kadar arkadaşlar. MongodDB’de kayıt ve collection silme işlemlerini gördük. Gelecek yazıda görüşene kadar sağlıcakla kalın.

Selam ve Sevgilerimle