Doğrulama Düzeyleri ve Eylemleri
Öğrenenler, ihlallerin nasıl ele alınacağını denetlemek için validationLevel (strict ve moderate) ile validationAction (error ve warn) yapılandıracaktır.
Doğrulama Düzeyleri ve Eylemleri, CoddyKit'te ücretsiz bir MongoDB Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, MongoDB Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. MongoDB Academy kursu toplamda 4 dersten oluşur.
Doğrulamanın Katılığını Denetleme
MongoDB, şema doğrulamasının davranışını ayarlamanız için birbirinden bağımsız iki seçenek sunar: validationLevel, hangi belgelerin doğrulamaya tabi tutulacağını; validationAction ise bir belge doğrulamadan geçemediğinde ne olacağını denetler. Bu iki seçenek birlikte, mevcut verileri veya uygulamaları bozmadan doğrulamayı mevcut koleksiyonlara kademeli olarak eklemenizi sağlar.
validationLevel: katı
Katı, varsayılan doğrulama düzeyidir. Katı modda her ekleme ve her güncelleme doğrulayıcıdan geçmelidir; hiçbir istisna yoktur. Koleksiyonda bulunan mevcut bir belge şemayı zaten ihlal ediyorsa, bu belgeyi güncellemeye çalışmak da doğrulayıcıya göre denetlenir. Katı mod, veri kalitesi için en güçlü güvenceyi sağlar; ancak kurallara uymayan eski belgeler içeren bir koleksiyona uygulandığında aksamalara yol açabilir.
db.runCommand({
collMod: 'users',
validator: { $jsonSchema: { /* ... */ } },
validationLevel: 'strict' // default — all inserts and updates must pass
});validationLevel: orta
Orta düzey, doğrulayıcıyı yalnızca yeni eklemelere ve doğrulayıcıdan zaten geçen belgelerin güncellenmesine uygular. Kurallara uymayan mevcut belgeler, uyumlu olmaya zorlanmadan güncellenmeye devam edebilir. Bu, güvenli bir geçiş yoludur: yeni şemayla henüz eşleşmeyen eski belgelerin güncellenmesini bozmadan, çalışan bir koleksiyonda doğrulayıcıyı etkinleştirmenizi sağlar.
db.runCommand({
collMod: 'users',
validator: { $jsonSchema: { /* ... */ } },
validationLevel: 'moderate' // existing non-conforming docs can still be updated
});validationLevel: kapalı
validationLevel değerini kapalı olarak ayarlamak, koleksiyona bir doğrulayıcı eklenmiş olsa bile doğrulamayı tamamen devre dışı bırakır. Bu seçenek, geçici olarak kurallara uymayan verileri yazmanız gereken toplu veri geçişleri veya acil düzeltmeler sırasında kullanışlıdır. Geçiş süresi sona erdikten sonra doğrulamayı mutlaka yeniden etkinleştirin.
// Temporarily disable validation for a migration window
db.runCommand({
collMod: 'users',
validationLevel: 'off'
});
// ... run migration ...
// Re-enable strict validation
db.runCommand({
collMod: 'users',
validationLevel: 'strict'
});validationAction: hata
Hata, varsayılan doğrulama eylemidir. Bir belge doğrulamadan geçemezse MongoDB yazma işlemini tamamen reddeder ve istemciye bir hata döndürür. Belge yazılmaz. Bu, hatalı verilerin koleksiyona girmesini tamamen önlediği için üretim ortamları açısından en güvenli ayardır.
db.runCommand({
collMod: 'orders',
validator: { $jsonSchema: { /* ... */ } },
validationAction: 'error' // default: reject the write, return an error
});validationAction: uyar
Uyar eylemi, belge doğrulamadan geçemese bile yazılmasına izin verir; ancak MongoDB sunucu günlüğüne bir uyarı mesajı kaydeder. Bu, mevcut uygulama trafiğini engellemeden kaç ihlal oluştuğunu gözlemlemek istediğiniz geçiş dönemlerinde kullanışlıdır. Günlükleri inceledikten ve sorunlu belgeleri düzelttikten sonra error eylemine geçebilirsiniz.
db.runCommand({
collMod: 'legacy_collection',
validator: { $jsonSchema: { /* ... */ } },
validationAction: 'warn' // write succeeds, violation logged to server log
});
// The server log will show:
// [conn1] Document failed validation: { ... } with schema: { ... }Düzey ile Eylemi Birleştirme
İki ayar birbirinden bağımsız olarak birlikte çalışır. Yaygın bir geçiş stratejisi, validationLevel: 'moderate' ve validationAction: 'warn' ile başlamaktır: yeni belgeler kurallara uymalıdır; ancak başarısız olduklarında yalnızca günlüğe kaydedilirler ve eski belgeler değiştirilmez. Uyarıları gözlemleyip eski verileri tamamladıktan sonra, kuralların tamamen uygulanması için strict + error ayarlarına geçin.
// Phase 1: observe without blocking
db.runCommand({
collMod: 'users',
validator: { $jsonSchema: { bsonType: 'object', required: ['email'] } },
validationLevel: 'moderate',
validationAction: 'warn'
});
// Phase 2 (after backfill): full enforcement
db.runCommand({
collMod: 'users',
validationLevel: 'strict',
validationAction: 'error'
});Doğrulama Yapılandırmasını Okuma
db.getCollectionInfos() kullanarak bir koleksiyondaki mevcut doğrulama ayarlarını denetleyin. Yanıt, tam doğrulayıcı belgesinin yanında options.validationLevel ve options.validationAction değerlerini de içerir. Bu, bir veritabanındaki tüm koleksiyonları denetlemek ve üretim koleksiyonlarında katı uygulamanın etkin olduğunu doğrulamak için kullanışlıdır.
const info = db.getCollectionInfos({ name: 'users' });
const opts = info[0].options;
console.log('level:', opts.validationLevel);
console.log('action:', opts.validationAction);
console.log('validator:', JSON.stringify(opts.validator, null, 2));bypassDocumentValidation ile Doğrulamayı Atlama
Bazı veritabanı işlemleri, belirli bir yazma işlemi için doğrulayıcıyı atlayan bypassDocumentValidation: true seçeneğini destekler. Bu seçeneği yalnızca bypassDocumentValidation ayrıcalığına sahip kullanıcılar kullanabilir. Bu seçenek yalnızca güvenilir yönetici betikleri ve veri geçişleri için tasarlanmıştır; doğrulayıcı kullanmanın amacını ortadan kaldırdığı için uygulama kodunda asla kullanmayın.
// Insert a document bypassing validation — admin/migration use only
db.users.insertOne(
{ name: 'LegacyUser' }, // missing required email
{ bypassDocumentValidation: true }
);Sunucu Günlüğündeki Doğrulama Uyarıları
validationAction değeri warn olduğunda, başarısız olan her doğrulama MongoDB sunucu günlüğüne WRITE bileşeni ve WARNING önem derecesiyle yazılır. Günlük satırında veritabanı, koleksiyon, ihlalde bulunan belgenin _id değeri ve ihlal edilen belirli şema kuralı yer alır. Bu günlükleri Atlas'ın günlük görüntüleyicisiyle veya kendi yönettiğiniz dağıtımlarda mongod.log dosyasını izleyerek takip edebilirsiniz.
Uygulamalı Geçiş Rehberi
Mevcut bir üretim koleksiyonuna doğrulama eklemek için önerilen dört aşamalı yol haritası şöyledir:
- 1. Aşama:
moderate+warnayarlarını yapın — etki yok, ihlalleri gözlemleyin - 2. Aşama: Uyumlu belgeler gönderecek şekilde uygulama kodunu düzeltin
- 3. Aşama: Eski ve kurallara uymayan belgeleri bir geçiş betiğiyle tamamlayın
- 4. Aşama:
strict+errorayarlarına geçin — kurallar tamamen uygulansın
Hızlı Kontrol
Bu dersteki MongoDB ve NoSQL veritabanları kavramlarını ne kadar anladığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: validationLevel (strict/moderate/off), hangi belgelerin doğrulanacağını denetler, validationAction (error/warn), başarısızlıkların işlemleri engelleyip engellemeyeceğini veya yalnızca günlüğe kaydedilip kaydedilmeyeceğini denetler ve moderate + warn birleşimi, çalışan bir koleksiyona doğrulama eklemenin en güvenli yoludur. Sırada, çalışan bir MongoDB kümesinde kesinti olmadan şemaları nasıl geliştireceğimizi öğreneceğiz.
Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“Doğrulama Düzeyleri ve Eylemleri” dersi ücretsiz mi?
Evet — “Doğrulama Düzeyleri ve Eylemleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve MongoDB Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. MongoDB Academy kursu toplamda 4 dersten oluşur.
“Doğrulama Düzeyleri ve Eylemleri” dersinde ne öğreneceğim?
Öğrenenler, ihlallerin nasıl ele alınacağını denetlemek için validationLevel (strict ve moderate) ile validationAction (error ve warn) yapılandıracaktır. MongoDB Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
MongoDB Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te MongoDB Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Doğrulama Düzeyleri ve Eylemleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu MongoDB Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her MongoDB Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bir Koleksiyona Doğrulayıcı Ekleme
- Tür, Zorunluluk ve Enum Kısıtlamaları
- Doğrulama Düzeyleri ve Eylemleri
- Kesinti Olmadan Şemaları Geliştirme