Ana içeriğe atla

MongoDB’de Koleksiyon Oluşturma: Manuel ve Otomatik Yöntemler

MongoDB’de koleksiyonların nasıl oluşturulduğunu, ne zaman açıkça tanımlanması gerektiğini ve temel yapılandırma seçeneklerini öğrenin.
Güncel 3 Eki 2026  · 5 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Özellikle ilişkisel veritabanı geçmişinden gelen bir geliştirici olarak MongoDB ile çalışırken fark edeceğiniz ilk şeylerden biri, şema tasarımının ne kadar esnek olduğudur.

MongoDB’deki koleksiyonların önceden açıkça oluşturulmasına gerek yoktur; ancak onları açıkça tanımlamak ve özenle yapılandırmak anlamlı olduğu zamanlar vardır.

Bu yazıda, MongoDB’de ne zaman ve nasıl bir koleksiyon oluşturmak isteyebileceğinize, göz önünde bulundurmanız gereken bazı temel yapılandırma seçeneklerine ve JS ile C# (favorim) dillerinde bazı kod örneklerine bakacağız. 

Merak etmeyin, sürücüler arasında pek çok özellik eşliği var; bugün burada gördüklerinizin çoğu <tercih ettiğiniz dili ekleyin> ile de mümkün olacak.

NoSQL veritabanlarında yeniyseniz, NoSQL’e Giriş ile başlamayı düşünebilirsiniz.

MongoDB Koleksiyonu Nedir?

Koleksiyonları nasıl oluşturduğumuza bakmadan önce, kısaca koleksiyonun ne olduğundan bahsedelim. 

SQL geçmişinden geliyorsanız, tablo, satır ve sütunlardan söz edilmesine alışık olabilirsiniz. MongoDB’de terimler biraz farklıdır. Tablo yerine koleksiyonlar, satır yerine ise sütunlar değil alanlara sahip belgeler vardır. 

MongoDB’nin süper güçlerinden biri dinamik şemasıdır. Bu, bir koleksiyonu kullanmadan önce elle oluşturmanız gerekmediği anlamına gelir. Henüz var olmayan bir koleksiyona bir belge eklerseniz MongoDB onu otomatik olarak oluşturur. Örneğin şunu çalıştırırsanız: 

db.movies.insertOne({ title: "The Matrix", year: 1999 });

Bu komut, “The Matrix” filmi için tek bir belgeyi movies koleksiyonuna eklemeye çalışacaktır. Koleksiyon zaten varsa belge eklenir. Yoksa, yeni belge eklenmeden önce movies koleksiyonu oluşturulur.

Ayrıca insertOne yerine insertMany kullanarak bir seferde birçok belge de ekleyebilirsiniz.

MongoDB Koleksiyonlarını Ne Zaman Açıkça Tanımlamalı?

MongoDB’nin koleksiyon oluşturmayı otomatik olarak yönetmesine izin verebilseniz de, özellikle üretim senaryolarında koleksiyonları önceden tanımlamak için iyi nedenler vardır. Koleksiyonları açıkça oluşturmak size şu fırsatları verir:

  • Günlük veya önbellekleme için sınırlandırılmış (capped) koleksiyonları yapılandırma.
  • Şemalarınızdaki kısıtları uygulamak için doğrulama kuralları ayarlama.
  • Zaman-aşımı (TTL) gibi belirli varsayılan indeksleri uygulama. Tarih alanı üzerindeki bu indeksler, belirttiğiniz süreye göre koleksiyonunuzdaki belgeleri otomatik olarak siler.
  • Koleksiyonları önceden boyutlandırarak yazma ağırlıklı iş yükleri için optimize etme.

Bu, MongoDB Shell’de nasıl koleksiyon oluşturacağınızın bir örneğidir:

db.createCollection("auditLogs", {
  capped: true,
  size: 10485760, // 10 MB
  max: 1000
});

Veya doğrulama ile:

db.createCollection("users", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["email", "createdAt"],
      properties: {
        email: {
          bsonType: "string",
          pattern: "^.+@.+$"
        },
        createdAt: {
          bsonType: "date"
        }
      }
    }
  }
});

MongoDB esnek bir şemayı desteklese de, yine de yukarıda görüldüğü gibi gerekli alanlar ya da belirli alanlar için veri türleri veya e-posta biçimi gibi özellikler tanımlamak isteyebilirsiniz. Bu, belgelerinizin belirli bir şemaya uymasını sağlamak istediğiniz durumlar içindir. 

Şema zorlaması SQL geçmişinden geliyorsanız tanıdık gelecektir; gelmiyorsanız bile, bazen üretimdeki uygulamalarınızın öngörülebilir yapıda belgelere ihtiyacı olur. Bu yüzden doğrulama bunun için harikadır!

C# Sürücüsü ile MongoDB Koleksiyonu Oluşturma

Bir C# uygulamasında da MongoDB sürücüsünü kullanarak koleksiyonları açıkça oluşturabilirsiniz. Temel işlemler için zorunlu olmasa da, gelişmiş seçenekleri programatik olarak ayarlayabileceğiniz yer burasıdır.

var options = new CreateCollectionOptions
{
    Capped = true,
    MaxSize = 10485760, // 10 MB
    MaxDocuments = 1000
};

await database.CreateCollectionAsync("auditLogs", options);

Doğrulayıcı eklemek için:

var validator = new BsonDocument
{
    { "$jsonSchema", new BsonDocument
        {
            { "bsonType", "object" },
            { "required", new BsonArray { "email", "createdAt" } },
            { "properties", new BsonDocument
                {
                    { "email", new BsonDocument
                        {
                            { "bsonType", "string" },
                            { "pattern", "^.+@.+$" }
                        }
                    },
                    { "createdAt", new BsonDocument
                        {
                            { "bsonType", "date" }
                        }
                    }
                }
            }
        }
    }
};

var collectionOptions = new CreateCollectionOptions<BsonDocument>
{
    Validator = new BsonDocumentFilterDefinition<BsonDocument>(validator)
};

await database.CreateCollectionAsync("users", collectionOptions);

Python geliştiricileri için MongoDB ve Python’a Giriş eğitimi harika bir kaynaktır.

Bilmeniz Gereken Temel Koleksiyon Yapılandırma Seçenekleri

Koleksiyonları açıkça oluştururken bilmek isteyebileceğiniz bazı seçenekler şunlardır:

  • capped: sabit boyutlu koleksiyon oluşturur
  • size: sınırlandırılmış koleksiyon için bayt cinsinden azami boyut
  • max: izin verilen azami belge sayısı
  • validator: şema sözdiziminde şema doğrulamasını tanımlayan JSON nesnesi
  • expireAfterSeconds: belgelerin otomatik silinmesini işlemek için TTL indeksleriyle birlikte kullanılır

Ayrıca oluşturma sırasında veya hemen sonrasında indeksler uygulayabilirsiniz. MongoDB, _id için gerekli olmadıkça indeksleri otomatik olarak oluşturmaz.

MongoDB’deki indeksler, en sık erişilen alanlarınızın performansını artırmanıza olanak tanır. Bu değerleri bellekte önbelleğe alırlar; bu da sabit disk erişimi gerekmediği anlamına gelir ve bu alanlara düzenli olarak erişirken ciddi zaman ve performans kazancı sağlar.

MongoDB Koleksiyonlarını Tanımlamak İçin En İyi Uygulamalar

Koleksiyonları ne zaman açıkça tanımlayacağınıza karar vermenize yardımcı olacak bazı yönergeler:

  • Hızlı bir kavram kanıtı, yerel geliştirme veya son kullanıcının içeriği dinamik olarak üretebildiği durumlar için örtük (implicit) oluşturma
  • Doğrulama uygulamak veya indeksleme ya da performans için ayarlar yapmak istediğinizde açık (explicit) oluşturma

Sonuç

MongoDB, verilerimizi nasıl yapılandıracağımız konusunda esneklik sunan esnek şemasıyla bilinir; buna koleksiyonları nasıl oluşturup yönettiğimiz de dahildir. Örtük oluşturma hızlı ve kullanışlıdır; ancak açık koleksiyon tanımları şema doğrulaması, sınırlandırılmış davranış ve performans ayarı gibi güçlü özelliklerin kilidini açar.

Her zamanki gibi, MongoDB Atlas, arayüz tabanlı araçlar, otomasyon ve yerleşik performans içgörüleriyle koleksiyon yönetimini daha da kolaylaştırır. Ve .NET ile çalışıyorsanız, C# sürücüsü güçlü türlenmiş modeller ve akıcı API’lerle ihtiyacınızı karşılar.

MongoDB koleksiyonlarını tanımlamaya yönelik en iyi uygulamaları değerlendirirken, temel veritabanı tasarımı ilkelerini anlamak da faydalı olabilir.

İyi kodlamalar! Koleksiyonlarınız hızlı, geçerli ve iyi indekslenmiş olsun!

SSS

MongoDB’de örtük (implicit) ve açık (explicit) koleksiyon oluşturma arasındaki fark nedir?

  • Örtük oluşturma: Var olmayan bir koleksiyona bir belge eklediğinizde MongoDB koleksiyonu otomatik olarak oluşturur. Bu, hızlı prototipleme veya geliştirme için kullanışlıdır.
  • Açık oluşturma: Gelişmiş ayarları (doğrulama kuralları, sınırlandırılmış boyut veya indeksleme gibi) yapılandırmak için koleksiyonu kullanmadan önce elle tanımlarsınız. Üretim ortamları için önerilir. 

MongoDB’nin koleksiyonu otomatik olarak oluşturmasına izin vermek yerine ne zaman bir koleksiyonu açıkça oluşturmalıyım?

Şu durumlarda bir koleksiyonu açıkça oluşturmalısınız: şema doğrulaması, sınırlandırılmış koleksiyonlar, performans optimizasyonları ve varsayılan indeksler.

Şemasız olan MongoDB’de şemayı nasıl zorunlu kılarım?

MongoDB, belge yapısı için kurallar tanımlamanıza olanak tanıyan JSON şema doğrulamasını destekler.

Sınırlandırılmış (capped) koleksiyonlar nedir ve ne zaman kullanılmalıdır?

Sınırlandırılmış (capped) koleksiyonlar, dolduğunda eski belgeleri otomatik olarak üzerine yazan sabit boyutlu koleksiyonlardır. 

TTL (Time-To-Live) indeksiyle bir koleksiyonu nasıl oluştururum?

TTL indeksleri, belirli bir sürenin ardından belgeleri otomatik olarak siler. Önce koleksiyonu oluşturun, ardından indeksi ekleyin.


Luce Carter's photo
Author
Luce Carter
LinkedIn

Luce Carter, MongoDB'de Kıdemli Geliştirici Savunucudur; Microsoft MVP, Contentful Dev Hero; Beginning MongoDB Atlas with .NET kitabının yazarı; kodu, güneşi ve öğrenmeyi seven biridir.

Konular
MongoDB
Veri Mühendisliği

Bu kurslarla MongoDB hakkında daha fazlasını öğrenin!

Kurs

Python ile MongoDB'ye Giriş

3 sa
24.4K
MongoDB ile esnek yapılandırılmış verileri işlemeyi ve analiz etmeyi öğrenin.
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

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

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.

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