Ana içeriğe atla

MongoDB Kullanarak Kapsamlı Bir NoSQL Eğitimi

NoSQL veritabanlarını öğrenin — neden NoSQL, ilişkisel veritabanlarından nasıl farklıdırlar, türleri nelerdir ve MongoDB kullanarak kendi NoSQL veritabanınızı tasarlayın.
Güncel 3 Eki 2026  · 9 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Dijital çağda üretilen veri miktarı patlarken, veritabanları büyük miktarda veriyi depolamak, yönetmek ve analiz etmek için kritik öneme sahiptir. Genel olarak iki tür veritabanı vardır: SQL ve NoSQL veritabanları.

SQL veritabanları yapılandırılmış bir format kullanır ve veriler şemalara sahip tablolarda düzenlenir. SQL veritabanlarından farklı olarak, NoSQL veritabanları yarı yapılandırılmış ve yapılandırılmamış verileri depolamak için esnek şema sunar. Günümüzün dijital ortamında üretilen muazzam veriyi yönetmek ve ondan yararlanmak için gerekli altyapıyı sağlarlar.

Bu kapsamlı rehber, NoSQL veritabanlarının temellerini ve sektörde mevcut örneklerle farklı NoSQL veritabanı türlerini ele alacaktır. Bu temelleri kavradıktan sonra, popüler bir NoSQL veritabanı olan MongoDB'ye dalacak ve CRUD (Create, Retrieve, Update ve Delete) işlemlerinin nasıl yapılacağını öğreneceğiz.

NoSQL nedir?

NoSQL, “Not Only SQL” ifadesinin kısaltmasıdır ve ilişkisel veritabanlarının sınırlamalarını gidermek için oluşturulmuştur. İlişkisel veritabanları katı bir yapıyı izler, tablo biçimindedir ve veri işleme için SQL (Structured Query Language) kullanır.

NoSQL veritabanları, yarı yapılandırılmış ve yapılandırılmamış verileri depolamak için daha esnek bir yaklaşım sunar.

NoSQL veritabanlarının temel avantajı, değişen yapılara sahip büyük veri hacimlerini işlemek için uygun olmalarıdır. NoSQL veritabanları şemasızdır; bu da daha fazla çeviklik ve ölçeklenebilirlik sağlar.

Ancak bu faydalar bazı ödünlerle gelir. Tutarlılıkları zayıftır ve karmaşık sorgular için sınırlı destek sunarlar. Bu sınırlamalara rağmen sağladıkları avantajlar nedeniyle yaygın olarak kullanılırlar ve SQL veritabanlarını tamamlarlar.

SQL ve NoSQL veritabanları arasındaki temel farklar ve hangisini ne zaman seçeceğinize dair bazı ipuçlarını ayrı bir eğitimden okuyabilirsiniz.

NoSQL Veritabanı Türleri

Farklı kullanım senaryolarının ihtiyaçlarını karşılamak için NoSQL veritabanları, verileri düzenlemek ve erişmek amacıyla çeşitli veri modelleri kullanır. İşte 4 yaygın NoSQL veritabanı türü.

  1. Anahtar-değer çifti tabanlı NoSQL veritabanlarının en basit biçimidir. Veriler anahtar ve değer çiftleri olarak saklanır ve anahtar kullanılarak alınabilir. Örnekler arasında Redis ve Amazon DynamoDB bulunur.
  2. Sütun odaklı veritabanları verileri satırlar yerine sütunlarda düzenler. Bu yapı, verilerin sütunlara göre alınmasında etkilidir. Apache Cassandra, HBase ve Google Bigtable sütun odaklıdır.
  3. Graf tabanlı veritabanları verileri düğümler, kenarlar ve özelliklerden oluşan grafik yapılarında saklar. Neo4j ve Amazon Neptune popüler graf tabanlı veritabanlarıdır.
  4. Belge odaklı verileri JSON benzeri belgeler olarak saklar. Bir belgenin yapısı değişebilir ve hatta iç içe geçmiş veriler içerebilir. Bu, yaygın olarak kullanılan bir NoSQL veritabanı türüdür. Örnekler arasında MongoDB ve CouchDB yer alır.

Farklı veritabanı türleri hakkında daha fazla bilgi edinmek için NoSQL Veritabanları: Her Veri Bilimcisinin Bilmesi Gerekenler eğitimimize bakmanızı öneririz.

NoSQL'in ne olduğunu ve NoSQL veritabanı türlerini öğrendikten sonra, sıra NoSQL veritabanlarıyla uygulamalı çalışmaya geliyor.

NoSQL Eğitimi: Bir Blog Platformu için NoSQL Veritabanı Tasarlama

Ele aldığımız kavramları kavramak ve denemek için pratik, gerçek dünyadan bir örneğe dalmak çok önemlidir. Hadi bir NoSQL eğitimini adım adım inceleyelim.

Diyelim ki kendi blog platformunuzu kurmakla ilgileniyorsunuz. Blog yazıları oluşturmak, yorumlara izin vermek ve bunları güncel tutmak istiyorsunuz. Verilerin yapılandırılmamış olduğunu bildiğiniz için, elinizdeki kullanım durumu için MongoDB gibi bir NoSQL veritabanının uygun olacağına dair bir fikriniz var.

MongoDB, açık kaynaklı bir NoSQL veritabanıdır. Tablolar yerine verileri JSON benzeri belgelerde saklar. Bu, karmaşık yapıların ve ilişkilerin kolayca temsil edilmesini sağlar. Bloglarda bulunması muhtemel metin, sayı veya görsel gibi farklı veri türlerini yönetmek kolaydır.

Hadi, makinenize MongoDB kurulumuyla başlayalım.

1. MongoDB'yi kurma

MongoDB'yi kurmak oldukça basittir. resmi MongoDB web sitesinden indirip kurabiliriz. Yönergeler farklı işletim sistemleri için değişir, bu nedenle resmi dokümanlardaki işletim sisteminize uygun kurulum talimatlarını kontrol edin.

Kurulumdan sonra MongoDB'yi başlatın. İşletim sisteminize göre terminali açıp aşağıdakileri yazmanız yeterlidir:

// Linux
sudo systemctl start mongod

//Mac OS
brew services start mongodb-community@7.0

Aşağıda gösterildiği gibi “Successfully started” diyen bir çıktı alacağız.

Çıktı: MongoDB Başlatılıyor

Çıktı: MongoDB başlatılıyor. (Bu ve aşağıdaki tüm görseller Yazar'a aittir)

MongoDB kurulumu, MongoDB veritabanıyla etkileşim kurmak için kullanabileceğimiz mongosh adlı bir MongoDB kabuğunu içerir. Dolayısıyla ek bir kurulum olmadan kullanabiliriz.

Aşağıdaki komutu terminalinizde çalıştırarak MongoDB kabuğunu başlatın:

mongosh

mongosh komutunu çalıştırmak, veritabanınıza bağlantıyı belirten aşağıdaki çıktıyı verecektir.

MongoDB kabuğunu başlatın

MongoDB kabuğunu başlatın.

MongoDB kurulu olduğuna göre, veri modelimizi tanımlamaya geçeceğiz.

2. Veri modelini tanımlama

“blog” adlı bir veritabanı ve “posts” ile “comments” adlarında iki koleksiyon oluşturacağız. “posts” koleksiyonu blog girişlerini, “comments” koleksiyonu ise bu yazılara yapılan yorumları saklamak içindir.

Her gönderi belgesinde başlık, içerik, yazar ve oluşturulma tarihi alanları; her yorum belgesinde ise yorum içeriği, yazar ve ilişkili gönderi kimliği alanları bulunacaktır.

Mevcut tüm veritabanlarını listelemek için kabukta show dbs komutunu çalıştırın. MongoDB'yi ilk kez kullanıyorsanız aşağıdaki çıktıyı göreceksiniz.

Mevcut veritabanlarını listeleyin.

Varsayılan olarak test veritabanını kullanıyor olacağız. Test veritabanında olsak da, veritabanı ancak ona bir koleksiyona belge eklediğimizde oluşturulur.

Yeni bir veritabanı oluşturmak için use <database_name> komutunu çalıştırın.

Örneğimizde veritabanımızın adı olarak “blog” kullanacağız. Yeni veritabanını oluşturmak için use blog komutunu çalıştırın. Yukarıda belirtildiği gibi, veritabanına bir koleksiyon ekleyene kadar show dbs komutu yeni veritabanını göstermeyecektir. Bu nedenle bir koleksiyon oluşturmak için aşağıdaki komutları çalıştırın.

// create database
use blog

// create collection
db.createCollection("posts")
db.createCollection("comments")

use blog komutunu çalıştırmak veritabanını “test”ten “blog”a geçirir.

Çıktı: Veritabanı ve koleksiyon oluşturma.

Koleksiyonları oluşturduktan sonra, show dbs komutuyla bunu doğrulayabiliriz.

Veritabanlarının listesi.

Bir veritabanı ve koleksiyonları başarıyla oluşturduk.

3. CRUD işlemlerini uygulama

MongoDB, verilerle etkileşim için dört temel CRUD (Create, Read, Update, Delete) işlemini destekler:

  1. Create: MongoDB'de bir belge oluşturmak için, onu insertOne() veya insertMany() yöntemiyle bir koleksiyona ekleriz. Belgeler herhangi bir geçerli JSON verisini içerebilir; bu da esnek şema tasarımına olanak tanır.
  2. Read: MongoDB'den veri okumak için find() yöntemiyle sorgu yaparız. Sorgular belirtilen ölçütlere göre belgeleri filtreleyip sonuçları döndürür.
  3. Update: Belgeleri güncellemek için updateOne() veya updateMany() kullanılabilir. Bu yöntem, esnek veri manipülasyonu sağlar.
  4. Delete: Bir koleksiyondan belgeleri silmek için deleteOne() veya deleteMany() kullanırız. Silme işlemleri, belirli bir alan değerinin eşleşmesi gibi belirtilen ölçütlere göre gerçekleştirilir.

Komutları gördüğümüze göre, bunları blog örneğimiz üzerinden pratiğe dökelim.

4. Bir blog yazısı oluşturma

MongoDB veritabanına belge eklemenin iki yöntemi vardır.

  1. insertOne() : Bu yöntem belgeleri tek tek ekler
  2. insertMany() : Bu yöntemle birden fazla belgeyi tek seferde ekleyebiliriz.

Her iki yöntemi de kullanarak veritabanına blog yazıları ekleyelim. Aşağıdaki kodda, “posts” koleksiyonunda belgeler oluşturuyoruz. Her belgede başlık, içerik, yazar ve oluşturulma tarihi bulunur.

// use insertOne() method to insert one document to the "posts" collection
db.posts.insertOne({
   title: "Introduction to NoSQL with MongoDB",
   content: "MongoDB is a NoSQL database that stores data in JSON format",
   author: "Arunn Thevapalan",
   createdAt: new Date()
})

// array of blog post documents
var postsData = [
   {
       title: "Getting Started with MongoDB",
       content: "Learn the basics of MongoDB",
       author: "Arunn Thevapalan",
       createdAt: new Date()
   },
   {
       title: "Advanced MongoDB Techniques",
       content: "Explore advanced features of MongoDB",
       author: "Jim Murphy",
       createdAt: new Date()
   }
];

// use insertMany() to insert multiple documents
db.posts.insertMany(postsData);

Bu çıktı, MongoDB sunucusunun insertOne isteğini başarıyla aldığını ve işlediğini gösterir.

Çıktı: Bir koleksiyona tek belge ekleme.

Benzer şekilde, aşağıdaki çıktı insertMany isteğinin başarıyla işlendiğini gösterir.

Çıktı: Bir koleksiyona birden fazla belge ekleme.

Create işlemine hakim olduğumuza göre, sırada Read işlemi var.

5. Blog yazılarını sorgulama

Koleksiyonlardan veri almak için find() yöntemini kullanabiliriz. “posts” koleksiyonumuzdan yukarıdaki blog yazılarını almak için aşağıdaki komutu çalıştırın.

db.posts.find()

find yöntemi “posts” koleksiyonundaki tüm belgeleri getirir. Aşağıdaki çıktı, önceki adımda eklediğimiz tüm belgeleri gösterir.

Çıktı: Bir koleksiyondan belgeleri alma.

6. Bir gönderiye yorum ekleme

Bir gönderiye birkaç yorum eklemek istediğimizi varsayalım; “comments” koleksiyonuna bir belge ekleyebiliriz. Yorumlar bloglarla ilişkilidir, bu nedenle gönderi kimliğine bir referans tutacağız.

// use an object id from any of the above entries
var postId = ObjectId("664bfc27f74ef93812b2179e")

// insert one comment
db.comments.insertOne({
   postId: postId,
   content: "Informative article!",
   author: "Anne Smith",
   createdAt: new Date()
})

Bu çıktı, MongoDB sunucusunun isteği aldığını ve işlediğini gösterir.

Çıktı: Başka bir belgeye referans veren bir belge oluşturma.

7. Bir gönderinin yorumlarını sorgulama

Belirli bir blog yazısıyla ilişkili yorumları almak için find() yöntemi sorgu filtresiyle kullanılabilir:

// retrieve the above comment

db.comments.find({postId: postId})

Aşağıdaki çıktı, önceki adımda eklediğimiz yorumu gösterir.

Çıktı: find sorgusunu kullanarak bir belge bulma.

Kullanıcılar blog yazıları oluşturduktan sonra, bunları daha sonra güncelleyebilmek isterler. Şimdi mevcut belgeleri nasıl güncelleyebileceğimize bakalım.

8. Bir blog yazısını güncelleme

Eklemede olduğu gibi, güncelleme de tekil veya toplu olarak yapılabilir.

  1. updateOne() : Bu yöntem belgeleri tek tek günceller
  2. updateMany() : Bu yöntem birden çok belgeyi aynı anda günceller.

“Introduction to NoSQL with MongoDB” başlıklı blog yazısının başlığını “Absolute Beginner Guide to NoSQL with MongoDB” olarak değiştirmeyi deneyin.

Önceki adımlardan gönderi kimliğini bildiğimiz için, başlığı değiştirmek üzere aşağıdaki kodu çalıştırın. postId değerini kendi belge kimliğinizle güncellediğinizden emin olun.

var postId = ObjectId("664bfc27f74ef93812b2179e");

db.posts.updateOne(
   { _id: postId },
   { $set: { title: "Absolute Beginner guide to NoSQL with MongoDB"} }
);

// verify update
db.posts.find({_id: postId})

Çıktı, isteğin başarıyla işlendiğini gösterir. 1 eşleşen belge bulundu ve 1 belge değiştirildi.

Çıktı: Bir belgeyi güncelleme.

9. Bir blog yazısını silme

Bir blog yazısını silmek için deleteOne() kullanılabilir. Önceki işlemlere benzer şekilde, isteğe bağlı olarak deleteMany() ile birden çok belgeyi aynı anda silebiliriz.

var postId = ObjectId("664bfc27f74ef93812b2179e");

// delete post
db.posts.deleteOne({ _id: postId });

// verify deletion -> no output
db.posts.find({_id: postId})

Çıktı, silme işleminin başarıyla tamamlandığını doğrular.

Çıktı: Bir koleksiyondan belge silme

Çıktı: Bir koleksiyondan belge silme

Elbette, genellikle öne çıkarma, beğeni, alkış, öneri vb. gibi çeşitli diğer işlemlerle daha karmaşık olan bir blog platformu tasarımını basitleştirdik. Ancak bunların tümü temel CRUD işlemlerinden birine dayanır ve artık bu temel kavramları iyi kavradık. Şimdi bu işlemler temelinde daha fazla özelliği keşfetme ve deneme sırası sizde.

Sonuç

Bu eğitim sizi NoSQL veritabanlarıyla tanıştırdı. Temel kavramlarla, NoSQL veritabanlarının tanımıyla, ilişkisel veritabanlarından nasıl farklılaştıklarıyla ve türleriyle başladık.

Bunu, yaygın olarak kullanılan belge tabanlı bir veritabanı olan MongoDB'yi kapsayacak şekilde genişlettik. Son olarak, blog platformumuz için bir veritabanı tasarlamak üzere basit bir örnekle pratiğe döktük.

Yeni bir kullanım durumu için veritabanı tasarlarken takılmanız normaldir; güncel işlevler ve örnekleri öğrenmek için resmi dokümantasyona başvurmanızı öneririz.

NoSQL bilginizi genişletmek istiyorsanız işte daha derinlemesine bazı kurslar ve eğitimler.


Arunn Thevapalan's photo
Author
Arunn Thevapalan
LinkedIn
Twitter

Kıdemli veri bilimcisi olarak, işletmelerin veriye dayalı daha iyi kararlar almasına yardımcı olmak için büyük ölçekli makine öğrenimi çözümleri tasarlıyor, geliştiriyor ve uyguluyorum. Veri bilimi yazarı olarak, öğrendiklerimi, kariyer tavsiyelerimi ve ayrıntılı uygulamalı eğitimleri paylaşıyorum.

Konular
SQL

DataCamp ile Öğrenmeye Devam Edin

Kurs

NoSQL'a Giriş

4 sa
10.8K
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör