DEV Community

Hakan Yalitekin
Hakan Yalitekin

Posted on • Originally published at hakanyalitekin.Medium on

MongoDB ile CURD işlemleri(.Net 5)

Merhabalar,

Uzun bir zamandır bir şeyler paylaşmadığımı fark ettim, kurum içi etkileşim ve öğrenimi artırmak için hazırladığım içeriği bu platform üzerinden de paylaşmak istedim. Öncelikle tanımlardan başlayalım ve sonrasında küçük bir örnek yapalım.

MognoDB Nedir?

MongoDB resmi sitesinde kendisini şu şekilde tanımlıyor;

“MongoDB, modern uygulama geliştiricileri ve bulut çağı için oluşturulmuş genel amaçlı, doküman tabanlı, dağıtılmış bir veri tabanıdır.”

Resmi tanımlamaya ilaveler yapacak olursak; verilerin doküman olarak tutulduğu, -dokümandan kasıt JSON formatı- açık kaynak kodlu, ücretsiz NoSQL bir veri tabanıdır.

MongoDB’yi bankacılık sektörü gibi verinin çok önemli olmadığı durumlar hariç, pek çok senaryo için kullanmak mümkün. Örneğin; loglamalar, birçok tablodan beslenen listeleme(rapor) ekranları en sık kullanılan senaryolardır.

Peki resmi tanımda doküman tabanlı derken kastedilen NoSQL database nedir? MongoDB’nin detaylarına inmeden kısaca NoSQL’den bahsedelim.

NoSQL Nedir?

NoSQL, “Not Only SQL”in kısaltılmış halidir. ilişkisel veri tabanlarına alternatif, ilişkisel olmayan, esnek yapılı, büyük verili ve çok sayıda request-response dönen sistemlerde, yüksek performans ve yönetim kolaylığı sunan veri tabanı çözümüdür.

NoSQL illaki doküman tabanlı olmak zorunda değildir. Bir çok farklı türü mevcuttur.

NoSQL’in avantajları, dezavantajları, detaylı anlatımı ve diğer türleri ile ilgili aşağıdaki kaynaklara göz atabilirsiniz.

Amazon Türkçe Kaynakhttps://aws.amazon.com/tr/nosql

Diğer bir kaynak (Halis Ak)https://link.medium.com/pJ5vhQvLReb

Asıl konumuz olan MongoDB’ye dönecek olursak, konunun daha iyi pekişmesi için CURD işlemlerinden oluşan küçük bir .Net Core projesi yapalım.

Tabi projemize geçmeden önce MongoDB ile çalışmak için gerekli ortamı sağlayalım.

MongoDB ile Çalışma Ortamının Hazırlanması

MongoDB ile ilgili çalışabileceğimiz bir çok farklı ortam yaratmak mümkün,

Docker Üzerinde MongoDB’nin kurulması

Docker’da MongoDB’yi standart portta ayaklandırmak için, aşağıdaki kodu çalıştırıyoruz. (Eğer yüklü değilse zaten yüklüyor)

docker run -d --name Mongo101 -p 27017:27017 mongo:latest

Container’imiz ayaklandığına göre, içine girip inceleyebiliriz.

docker exec -it Mongo101 bash

Daha sonrasında MongoDB’yi incelemek istersek, eriştiğimiz bash’e mongo komutunu vererek Mongo Shell'e erişmemiz yeterlidir. Aşağıdaki versiyon bilgilerinin, connection string bilgilerini görebiliyor olmamız gerekir.

mongo

Proje Öncesi MongoDB’ye bir göz atalım

Artık mongo komutları verebildiğimize göre ilk kurulumda gelen default veri tabanlarının listesine bir göz atalım.


#Mongo shell komutu  
**show dbs**  
Enter fullscreen mode Exit fullscreen mode

MongoDB case sensitive (harf duyarlı) bir yapıdadır. Bu yüzden büyük küçük harflere dikkat edilmelidir.

Default gelen DB’lere göz gezdirdiğimize göre artık kendi DB’mizi oluşturma vakti geldi. Bunun için use komutunu kullanabiliriz. Eğer varsa kullanacak, yoksa yeni oluşturulacak.

**use eStoreDB**

#Extra Bilgi:"use" komutu ile gidilmiş o anki DB'yi siler.(use eStoreDB)
**db.dropDatabase()**
Enter fullscreen mode Exit fullscreen mode

DB’yi oluşturduk, şimdi sıra geldi tablomuzu(collection) oluşturmaya.

**db.createCollection("users")**

#Extra Bilgi: Collection(tablolar)'ı listeler.
**db.getCollectionNames()**  

#Extra Bilgi: Collection'u(tabloyu siler)
**db.users.drop()**
Enter fullscreen mode Exit fullscreen mode

DB'miz ve Tablomuz(Collection) hazır olduğuna göre örnek bir kaç kayıt atalım. Bunun için insertMany metodunu kullanacağız.

MongoDB’nin Temel CRUD yapısını inceleyelim → https://docs.mongodb.com/manual/crud/

MongoDB Karşılaştırma Operatörleri inceleyelim → https://docs.mongodb.com/manual/reference/operator/query/

MongoDB’nin SQL’e karşılık gelen yapısını inceleyelim → https://docs.mongodb.com/manual/reference/sql-comparison/

**Yukarda insert örneği görmüştük simdi bir kaç örnek listeleme sorgu yazalım;**

#Tüm kullanıcıları listele
**db.users.find().pretty()**

#Yaşı 25'ten büyük olanların Ad-Soyad bilgisini getir.
**db.users.find({ age:{$gt:25}} , {firstName:1, lastName:1}).pretty()**  

Enter fullscreen mode Exit fullscreen mode

Temel hatlarıyla MongoDB üzerine fikir sahibi olduğumuza göre ilk uygulamamızı kodlamaya başlayabiliriz.

MongoDB CRUD işlemleri (.Net 5)

1.Adım → Uygulamanın Oluşturulması

Öncelikle bir Web API projesi oluşturuyoruz.

Proje adını MongoDB101.API, solution adını MongoDB101 olarak ayarlıyoruz.

Daha sonrasında ise, framework olarak .NET 5.0 ve beraberinde gelen swagger desteği için Enabel OpenAPI support ’u işaretliyoruz.

Default olarak gelen controller ve klası siliyoruz.

Projemizi oluşturduğumuza göre, MongoDB’yi kullanabilmek için ihtiyacımız olan nuget paketini aşağıdaki görsel yardımı ile kuralım.

2.Adım → MongoDB’ye erişmek için gerekli olan konfigürasyonlar

Şimdi sıra geldi MongoDB’ye bağlanma aşamasına. Bunun için öncelikle -— 📂 Settings adında bir klasör, akabinde IDbSettings adında public bir interface oluşturuyoruz ve içeriğine aşağıdaki property’leri ekliyoruz.

Bu interface’i implemente edecek olan MongoDbSettings adındaki klasımızı oluşturuyoruz. IDbSettings interface’imizi implemente ediyoruz.

appsettings.json dosyasına MongoDB’ye bağlanmak için gerekli olan tanımlamalarımız yapıyoruz.

Startup.cs klasımıza gidip aşağıdaki kodlarımızı ConfigureServices'in altında tanımlıyoruz. Ne anlama geldiklerini aşağıda yorum olarak ekledim.

3.Adım → Collection’a karşılık gelen modelin oluşturulması

Servis katmanımızı yazmadan önce modelimizi oluşturalım. Uygulamamıza öncelikle 📂 Model adında bir klasör ve sonrasında User adında bir klas ekleyelim ve içeriğini aşağıdaki gibi dolduralım.

property’lerin üzerlerinde bulunan attribute’lerin ne ifade ettiğini yorum olarak belirttim.

4.Adım → Service’in yazılması

Projemize 📁 Service adında bir klasör ve UserService adında bir klas oluşturalım. Constructor’ımızı aşağıdaki gibi düzenleyelim. Akabinde ilgili metotlarımızı ekleyelim.

5.Adım → Controller’ın oluşturulması

UserController ’ımızı oluşturalım fakat oluştururken API ’ı seçtiğimize emin olalım.

UserService'in constructor'ında ihtiyacımız olan settings bilgilerini aşağıdaki gibi ekliyoruz. Akabinde ilgili metotlarımızı yazmaya başlıyoruz.

6.Adım → Swagger ile metotların tetiklenmesi

Uygulamamızı çalıştırdığımızda şöyle bir ekranın bizi karşılaması gerekiyor ve bu da sırasıyla endpoint’lerimizi test edebiliriz demektir.

Umarım ufakta olsa faydam dokunmuştur. Bir sonraki yazıda görüşmek üzere.

Top comments (0)