yoklateknik mülakat

MongoDB Veritabanı Mülakat Soruları

450 doğrulanmış MongoDB Veritabanı mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Mongodb AggregationZorluk 1
MongoDB'de aggregation pipeline nedir?
  • afind()'ı tamamen yerine geçen tek bir sorgu operatörü
  • bHer stage'in çıktısının bir sonraki stage'in girdisi olduğu, sıralı bir stage dizisi
  • cDaha hızlı okuma için index'leri önceden hesaplayan bir arka plan thread'i
  • dİstemci tarafında çalıştırılan, JavaScript ile yazılmış bir stored procedure
Açıklama:Aggregation pipeline, aggregate()'e verilen bir stage dizisidir (ör. $match, $group, $project); document'lar sırayla stage'lerden geçer, her stage bir öncekinin çıktısını dönüştürür. find()'ın yerine geçmez (a) — basit sorgular için find() hâlâ vardır —, index kuran bir thread değildir (c) ve stored procedure değildir (d).
Mongodb AggregationZorluk 1
Aggregation pipeline'da $match stage'i ne yapar?
  • aDocument'ları filtreler; yalnızca verilen koşula uyanlar bir sonraki stage'e geçer
  • bDocument'taki her alanı verilen hedef isme yeniden adlandırır
  • cMevcut collection'ı paylaşılan bir alana göre başka bir collection ile birleştirir (join)
  • dDocument'ları bir key'e göre gruplar ve grup başına accumulator hesaplar
Açıklama:$match, girdi document'larını sorgu benzeri kriterlerle filtreler; yalnızca eşleşenler pipeline'da devam eder — kavramsal olarak bir WHERE koşuluna ya da find()'ın sorgu argümanına benzer. Alan yeniden adlandırma $project/$addFields'ın işidir (b), join $lookup'ındır (c), gruplama $group'undur (d).
Mongodb AggregationZorluk 2
db.orders.aggregate([
  { $group: { _id: "$status", total: { $sum: "$amount" } } }
])

$group içindeki _id alanı neyi kontrol eder?
  • aİsteğe bağlı bir metadata'dır, $group stage'inden çıkarılabilir
  • bHer zaman her document'in orijinal MongoDB _id alanına işaret eder
  • cGruplama key'ini tanımlar — burada, her farklı status değeri için bir çıktı document'ı
  • dGruplanmış sonuçların saklanacağı çıktı collection'ının adını belirler
Açıklama:$group'un _id ifadesi zorunludur ve document'ların neye göre gruplanacağını tanımlar — burada "$status", her farklı status değeri için hesaplanmış total'ı taşıyan bir sonuç document'ı demektir. Zorunludur, isteğe bağlı değildir (a); document'in orijinal _id'sine referans vermek zorunda değildir (b) ve $group tek başına bir collection'a yazmaz — bu $out/$merge'ün işidir (d).
Mongodb AggregationZorluk 1
$project stage'inin temel amacı nedir?
  • aAlttaki collection'da diskteki istenmeyen alanları kalıcı olarak silmek
  • bStage'de listelenen alanlar üzerinde yeni bir index oluşturmak
  • cBoolean bir koşulu sağlamayan document'ları filtrelemek
  • dDocument'ları yeniden şekillendirmek — çıktı için alan dahil etmek, hariç tutmak ya da hesaplamak
Açıklama:$project her document'i yeniden şekillendirir: mevcut alanları dahil edebilir, hariç tutabilir, yeniden adlandırabilir ya da ifadelerden yeni alanlar hesaplayabilir — bunların hepsi yalnızca pipeline çıktısı içindir. Diskteki saklanan collection'ı asla değiştirmez (a), index oluşturmaz (b, bu createIndex'in işi) ve document filtrelemek $match'in işidir (c).
Mongodb AggregationZorluk 2
{ $group: { _id: "$customerId", orderCount: { $sum: 1 } } }

Burada { $sum: 1 } neyi hesaplar?
  • aDocument içinde herhangi bir yerde bulunan tüm sayısal alanların toplamı
  • bHer grup için document sayısı, çünkü 1 her document için bir kez eklenir
  • cHer müşteri için, tam sayı olarak ifade edilen ortalama sipariş tutarı
  • dGruplanan müşteri document'ları arasında görülen en yüksek _id değeri
Açıklama:{ $sum: 1 }, bir gruba düşen her document için 1 sabit değerini ekler; bu, grup başına document sayma için standart bir deyimdir — COUNT(*) ... GROUP BY'ın karşılığıdır. Keyfi sayısal alanları toplamaz (a), ortalama değildir (c, bu $avg'ın işi) ve _id büyüklüğüyle ilgisi yoktur (d).
Mongodb AggregationZorluk 1
$unwind stage'i, array alanı olan bir document'a ne yapar?
  • aArray'i açar (deconstruct eder); array'in her elemanı için ayrı bir document üretir
  • bArray'in elemanlarını yerinde artan sırada sıralar
  • cArray alanını her document'tan tamamen kaldırır
  • dArray'i virgülle ayrılmış tek bir string alanında birleştirir
Açıklama:$unwind, array alanı olan bir document'ı alır ve o array'in her elemanı için, alanın tek bir elemanla değiştirildiği ayrı bir document üretir — array içeriğine göre gruplamadan/filtrelemeden önce faydalıdır. Yerinde sıralama yapmaz (b), alanı silmez (c) ve array'i string'e çevirmez (d).

2475 soruluk Veritabanı bankasında kendini sına.

Mülakata başla