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?

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 yolu | Yazı sayısı | Kimler için |
|---|---|---|
| Başlangıç ve kurulum | 6 | MongoDB'ye yeni başlayanlar |
| CRUD işlemleri | 11 | Veri ekleme, okuma, güncelleme ve silme öğrenenler |
| Aggregation | 6 | Raporlama ve veri dönüştürme yapanlar |
| Veri modelleme | 3 | Şema tasarlayan geliştiriciler |
| İndeks ve performans | 6 | Yavaş sorguları hızlandırmak isteyenler |
| Özel özellikler | 4 | Metin arama, konum, zaman serisi ve olay akışı ihtiyacı olanlar |
| Güvenlik ve yönetim | 7 | Sunucuyu işleten sistem yöneticileri |
| Replikasyon, ölçekleme ve hatalar | 6 | Ü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,
_idkuralları, SQL karşılıkları, replica set ve sharding'in genel mantığı. Seriye buradan başlayın. - MongoDB Ubuntu kurulumu: Resmî APT deposundan
mongodb-orgkurulumu, 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.jsve kabuk ayarları. - Connection string (URI):
mongodb://vemongodb+srv://biçimleri,authSourcemantığı, 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,
_idalanının üretilmesi ve toplu eklemedeorderedseçeneğinin hatalardaki etkisi. - find sorguları:
find()vefindOne()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$exprkullanımı. - Dizi sorgulama ve $elemMatch: Dizi alanlarında eşleşme,
$all,$size,$elemMatchve belge dizilerinin sorgulanması. - updateOne ve updateMany: Belge güncelleme ve değiştirme yöntemleri,
$set,$inc,$unset,$renameoperatörleri ve upsert davranışı. - Dizi güncelleme: $push ve $pull: Dizilere öğe ekleme ve çıkarma, konumsal operatörler ve
arrayFiltersile 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ı:
$regexile 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

Veriyi aşamalar halinde süzer, gruplar, birleştirir ve sonuçları yeni koleksiyonlara yazarsınız.
- Aggregation pipeline: Pipeline kavramı,
$match,$project,$sort,$limitaşamaları, sunucunun yaptığı optimizasyonlar ve sınırlar. - $group ve accumulator: Belgeleri gruplayıp
$sum,$avg,$min,$max,$pushile özetleme;$countve$sortByCount. - $lookup ile join: İki koleksiyonu eşitlik koşuluyla veya alt pipeline ile birleştirme ve
$unwindile dizileri açma. - $addFields, $set ve $project: Belgeye hesaplanmış alan ekleme, alanları yeniden şekillendirme,
$unsetaş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 BYgibi 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,
validationLevelvevalidationActionayarları vecollModile 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
expireAfterSecondsile 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,
slowmseş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,
$textsorgusu ve Türkçe dahil dil desteği. - Geospatial ve 2dsphere: GeoJSON nesneleri,
2dsphereindeksi ve$near,$geoWithin,$geoIntersectsile konum sorguları. - Time series koleksiyonları: Zaman serisi koleksiyonu oluşturma,
timeFieldvemetaField, 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

Sunucuyu yapılandırır, erişimi kısıtlar, yedek alır ve üretim ortamına hazırlarsınız.
- mongod.conf yapılandırma: YAML yapılandırma dosyası,
net.bindIp,storage.dbPath,systemLogayarları ve komut satırı karşılıkları. - Authentication etkinleştirme: Erişim denetimini açma, localhost istisnası, SCRAM mekanizması ve ilk yönetici kullanıcının oluşturulması.
- Kullanıcı ve rol yönetimi:
createUser(), rol atama, yerleşik roller ve ihtiyaca göre özel rol tanımlama. - Güvenlik kontrol listesi: Ağ erişimi, TLS, güvenlik duvarı ve sertleştirme adımlarını içeren resmî kontrol listesinin uygulanması.
- mongodump ve mongorestore: İkili yedek alma ve geri yükleme, gzip ve arşiv seçenekleri ve oplog ile tutarlı yedek.
- mongoexport ve mongoimport: JSON ve CSV biçiminde veri dışa ve içe aktarma ve bu araçların mongodump'tan farkı.
- Production notları ve performans: ulimit, Transparent Huge Pages, WiredTiger önbelleği gibi işletim sistemi ayarları ve
mongostat,mongotopile izleme.
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,jvewtimeoutayarları, 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:
- İşletim sisteminize göre Ubuntu veya Windows kurulumunu yapın.
- mongosh ile bağlanın ve birkaç belge ekleyip sorgulayın.
- Sunucuyu dışa açmadan önce kimlik doğrulamayı açın ve uygulama için ayrı bir kullanıcı tanımlayın.
- mongod.conf dosyasında dinlenen adresi ve dizinleri gözden geçirin, ardından güvenlik kontrol listesini uygulayın.
- Yedekleme düzenini kurun ve geri yüklemeyi bir kez deneyin.
- Uygulamanızın sorgularına göre indeksleri oluşturun ve explain() ile kontrol edin.
- Yüksek erişilebilirlik gerekiyorsa replica set kurun.
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