Bu rehber, MongoDB'yi kendi sunucunuzda kurup kullanmak isteyenler için hazırladığımız 50 yazılık serinin yol haritasıdır. Yazıları sekiz öğrenme yoluna ayırdık: başlangıç ve kurulum, CRUD işlemleri, aggregation, veri modelleme, indeks ve performans, özel özellikler, güvenlik ve yönetim, replikasyon, ölçekleme ve hatalar. Sıfırdan başlıyorsanız yolları sırayla izleyin; belirli bir sorunu çözmeye çalışıyorsanız doğrudan ilgili yazıya geçebilirsiniz.

Serinin tamamı MongoDB 9.0 resmî belgelerine, mongosh 2.14 ve MongoDB Database Tools 100.x belgelerine dayanıyor. Örnekler mongosh sözdizimiyle yazıldı ve kendi yönettiğiniz (self-managed) kurulumlar düşünülerek hazırlandı; Atlas'a özgü konulara yalnızca değinildi. MongoDB 9.0 ile değişen davranışları ayrı bir yazıda topladık ve ilgili yazılardan oraya bağlantı verdik.

Nasıl kullanmalısınız?

Nasıl kullanmalısınız? Başlangıç ve kurulum, CRUD işlemleri, Aggregation, Veri modelleme

Her yolun başındaki yazılar sonrakilerin temelini oluşturur. Örneğin indeks yazılarını okumadan önce find() sorgularını ve operatörleri bilmeniz, aggregation yazılarından önce temel CRUD işlemlerini denemiş olmanız işinizi kolaylaştırır. Yazılar birbirini tekrar etmez; bir konunun ayrıntısı başka bir yazıda ise oraya bağlantı verilir. Kendi makinenizde bir deneme sunucusu kurup örnekleri oradaki boş bir veritabanında denemenizi öneririz; üretimdeki verinizin üzerinde deneme yapmayın.

Öğrenme yoluYazı sayısıKimler için
Başlangıç ve kurulum6MongoDB'ye yeni başlayanlar
CRUD işlemleri11Veri ekleme, okuma, güncelleme ve silme öğrenenler
Aggregation6Raporlama ve veri dönüştürme yapanlar
Veri modelleme3Şema tasarlayan geliştiriciler
İndeks ve performans6Yavaş sorguları hızlandırmak isteyenler
Özel özellikler4Metin arama, konum, zaman serisi ve olay akışı ihtiyacı olanlar
Güvenlik ve yönetim7Sunucuyu işleten sistem yöneticileri
Replikasyon, ölçekleme ve hatalar6Üretim ortamı kuranlar ve sorun giderenler

1. Başlangıç ve kurulum

Bu yolda MongoDB'nin ne olduğunu öğrenir, sunucuyu kurar ve ilk bağlantınızı yaparsınız.

  • MongoDB nedir?: Belge modeli, koleksiyonlar, _id kuralları, SQL karşılıkları, replica set ve sharding'in genel mantığı. Seriye buradan başlayın.
  • MongoDB Ubuntu kurulumu: Resmî APT deposundan mongodb-org kurulumu, sürüm sabitleme, systemctl ile servis yönetimi, varsayılan dizinler ve tamamen kaldırma.
  • MongoDB Windows kurulumu: MSI sihirbazı, msiexec ile gözetimsiz kurulum ve zip arşivi; MongoDB'yi Windows servisi olarak çalıştırma ve güvenlik duvarı kuralı.
  • mongosh kullanımı: Sunucuya bağlanma, temel kabuk komutları, yardım sistemi, --eval, betik çalıştırma, .mongoshrc.js ve kabuk ayarları.
  • Connection string (URI): mongodb:// ve mongodb+srv:// biçimleri, authSource mantığı, paroladaki özel karakterler ve önemli bağlantı seçenekleri.
  • BSON veri tipleri: ObjectId, Date, Int32, Long, Decimal128 gibi tiplerin davranışı, tipler arası karşılaştırma sırası ve Extended JSON modları.

2. CRUD işlemleri

Veri ekleme, okuma, güncelleme ve silme yöntemlerini mongosh üzerinden adım adım öğrenirsiniz.

  • Veritabanı ve koleksiyon oluşturma: use, createCollection(), koleksiyonları listeleme ve silme ile veritabanı ve koleksiyon adlandırma kuralları.
  • insertOne ve insertMany: Belge eklemenin iki yolu, _id alanının üretilmesi ve toplu eklemede ordered seçeneğinin hatalardaki etkisi.
  • find sorguları: find() ve findOne() ile filtre yazma, projection ile alan seçme ve gömülü belgeler üzerinde sorgulama.
  • Sorgu operatörleri: Karşılaştırma ($eq, $gt, $in), mantıksal ($and, $or, $not) ve eleman operatörleri ile $expr kullanımı.
  • Dizi sorgulama ve $elemMatch: Dizi alanlarında eşleşme, $all, $size, $elemMatch ve belge dizilerinin sorgulanması.
  • updateOne ve updateMany: Belge güncelleme ve değiştirme yöntemleri, $set, $inc, $unset, $rename operatörleri ve upsert davranışı.
  • Dizi güncelleme: $push ve $pull: Dizilere öğe ekleme ve çıkarma, konumsal operatörler ve arrayFilters ile seçili dizi öğelerini güncelleme.
  • deleteOne ve deleteMany: Belge silme yöntemleri, findOneAndDelete() ve belge silme ile koleksiyonu tamamen kaldırma arasındaki fark.
  • Sort, limit, skip ve sayfalama: İmleçlerin çalışma biçimi, sonuçları sıralama ve sınırlama, countDocuments() ve sayfalama yaklaşımları.
  • Regex sorguları: $regex ile metin arama, seçenekler, indeks kullanımına etkisi ve collation ile büyük-küçük harf duyarsız arama.
  • bulkWrite ve toplu işlemler: Birden fazla yazma işlemini tek çağrıda gönderme, sıralı ve sırasız çalıştırmanın farkı ve hata davranışı.

3. Aggregation

3. Aggregation: Aggregation pipeline, $group ve accumulator, $lookup ile join, $addFields, $set ve $project

Veriyi aşamalar halinde süzer, gruplar, birleştirir ve sonuçları yeni koleksiyonlara yazarsınız.

  • Aggregation pipeline: Pipeline kavramı, $match, $project, $sort, $limit aşamaları, sunucunun yaptığı optimizasyonlar ve sınırlar.
  • $group ve accumulator: Belgeleri gruplayıp $sum, $avg, $min, $max, $push ile özetleme; $count ve $sortByCount.
  • $lookup ile join: İki koleksiyonu eşitlik koşuluyla veya alt pipeline ile birleştirme ve $unwind ile dizileri açma.
  • $addFields, $set ve $project: Belgeye hesaplanmış alan ekleme, alanları yeniden şekillendirme, $unset aşaması ve ifade operatörleri.
  • $out, $merge ve materialized view: Pipeline sonuçlarını koleksiyona yazma, isteğe bağlı materialized view oluşturma ve view ile farkı.
  • MongoDB ve SQL karşılaştırma: SQL terimlerinin ve SELECT, WHERE, GROUP BY gibi sorguların MongoDB karşılıkları.

4. Veri modelleme

Belgelerinizi nasıl tasarlayacağınıza, kuralları nasıl zorlayacağınıza ve birden fazla belgeyi birlikte nasıl güncelleyeceğinize karar verirsiniz.

  • Embedding ve referencing: Gömme ile referans arasındaki seçim, bire-çok ilişkiler, yaygın tasarım desenleri ve kaçınılması gereken anti-desenler.
  • Schema validation ve $jsonSchema: Koleksiyona doğrulama kuralı ekleme, validationLevel ve validationAction ayarları ve collMod ile değişiklik.
  • Transaction kullanımı: Çok belgeli transaction, oturumlar (session), sınırlar ve üretim ortamında dikkat edilecek noktalar.

5. İndeks ve performans

Sorgularınızın hızlı çalışması için doğru indeksleri kurar ve yavaş sorguları teşhis edersiniz.

  • İndeks oluşturma: createIndex(), getIndexes(), dropIndex(), tek alanlı indeksler ve indeks oluşturma sürecinin davranışı.
  • Compound index ve ESR kuralı: Bileşik indekslerde alan sırasının önemi, ESR (Equality, Sort, Range) kuralı ve indeks önekleri.
  • Unique, partial ve sparse indeks: Benzersiz, kısmi, seyrek, gizli (hidden) ve büyük-küçük harf duyarsız indeks türleri ve kullanım yerleri.
  • TTL index: Süresi dolan belgelerin expireAfterSeconds ile otomatik silinmesi ve TTL indekslerinin sınırları.
  • explain() ve sorgu planı: explain() çıktısını okuma, executionStats, IXSCAN ile COLLSCAN farkı ve sorgu planlarının seçimi.
  • Yavaş sorgular ve profiler: Veritabanı profiler'ını açma, slowms eşiği ve yavaş sorgu günlüklerini inceleme.

6. Özel özellikler

Belge veritabanının temel işlemlerinin ötesinde, belirli ihtiyaçlara yönelik özellikleri tanırsınız.

  • Text index ve metin arama: Kendi sunucunuzda text indeks oluşturma, $text sorgusu ve Türkçe dahil dil desteği.
  • Geospatial ve 2dsphere: GeoJSON nesneleri, 2dsphere indeksi ve $near, $geoWithin, $geoIntersects ile konum sorguları.
  • Time series koleksiyonları: Zaman serisi koleksiyonu oluşturma, timeField ve metaField, granularity ayarı ve sınırlamalar.
  • Change streams: watch() ile değişiklikleri dinleme, change event yapısı, resume token ve replica set gereksinimi.

7. Güvenlik ve yönetim

7. Güvenlik ve yönetim: mongod.conf yapılandırma, Authentication etkinleştirme, Kullanıcı ve rol yönetimi, Güvenlik kontrol listesi

Sunucuyu yapılandırır, erişimi kısıtlar, yedek alır ve üretim ortamına hazırlarsınız.

8. Replikasyon, ölçekleme ve hatalar

Yüksek erişilebilirlik ve ölçekleme için çok sunuculu yapıları kurar, sürüm değişikliklerini izler ve sık karşılaşılan hataları çözersiniz.

  • Replica set kurulumu: Replica set kurma, rs.initiate(), tek sunucuyu replica set'e dönüştürme ve primary seçimlerinin işleyişi.
  • Write concern ve read concern: w, j ve wtimeout ayarları, read concern seviyeleri ve read preference ile okumaların yönlendirilmesi.
  • Sharding ve shard key: Sharding kavramı, cluster bileşenleri, shard key seçimi ve hashed ile ranged sharding farkı.
  • MongoDB 9.0 yenilikler: Yalnızca resmî 9.0 sürüm notlarına ve uyumluluk değişikliklerine dayanan, yükseltme öncesi okunması gereken özet.
  • E11000 duplicate key hatası: DuplicateKey (11000) hatasının nedenleri, unique indekslerle ilişkisi ve eş zamanlı upsert işlemlerinde ortaya çıkışı.
  • Bağlantı hataları ve server selection timeout: Sunucu seçimi zaman aşımı, reddedilen bağlantılar ve kimlik doğrulama hatalarını belgelenmiş komutlarla teşhis etme.

Kendi sunucunuzda başlarken önerilen sıra

Bir VPS üzerinde sıfırdan MongoDB kuracaksanız aşağıdaki sıra, güvenliği en başta ele alarak çalışan bir ortama ulaşmanızı sağlar:

Sunucu tarafındaki genel işler için Linux sunucu yönetimi temelleri, systemd servis yönetimi, UFW güvenlik duvarı ve VPS güvenlik sertleştirme yazılarımız da işinize yarayacaktır. Yedekleme stratejisini veritabanından bağımsız olarak düşünmek isterseniz veritabanı yedekleme stratejileri yazısına bakın.

MongoDB'yi diğer veritabanlarıyla birlikte düşünmek

MongoDB her iş için tek doğru seçim değildir; bazı projelerde ilişkisel bir veritabanı veya bir önbellek sunucusu MongoDB'nin yanında ya da yerine kullanılır. Genel karşılaştırma için veritabanı türleri rehberine, ilişkisel tarafta SQL nedir, PostgreSQL nedir ve MySQL nedir yazılarına, önbellek için Redis nedir yazısına bakabilirsiniz. MongoDB'ye Node.js uygulamasından bağlanacaksanız Node.js nedir yazısı ortamı tanımanıza yardım eder.

Sık Sorulan Sorular

Hiç veritabanı deneyimim yok, nereden başlamalıyım?

Önce MongoDB nedir yazısını okuyun, ardından bir kurulum yazısıyla deneme sunucusu kurun ve CRUD yolunu sırayla izleyin. Aggregation ve indeks konularına CRUD işlemlerini rahatça yaptıktan sonra geçin.

Yazılardaki örnekler hangi sürüm için?

Örnekler MongoDB 9.0 ve mongosh 2.14 belgelerine göre yazıldı. Daha eski bir sürüm kullanıyorsanız davranış farklı olabilir; kullandığınız sürümün belgelerine ve 9.0 sürüm notları özetine bakın.

MongoDB Atlas anlatılıyor mu?

Hayır. Seri kendi sunucunuzda çalışan MongoDB Community kurulumlarına odaklanır. Atlas'a özgü özelliklerden yalnızca gerektiğinde kısaca söz edilir.

Bir hata mesajıyla karşılaştım, hangi yazıya bakmalıyım?

Yinelenen anahtar hataları için E11000 yazısına, sunucuya ulaşamama ve kimlik doğrulama sorunları için bağlantı hataları yazısına bakın. Yavaşlık sorunlarında explain() ve profiler yazıları yol gösterir.

Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.

İlgili içerikler: MongoDB nedir · Ubuntu kurulumu · mongosh kullanımı · find sorguları · Aggregation pipeline · Güvenlik kontrol listesi