[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:database\u002Fmongodb":4,"config":214},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":7,"topic_name":7,"spec_key":8,"spec_name":9,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":118,"samples":129},"database","Veritabanı","","mongodb","MongoDB","tr",450,2475,[14,15,16],"junior","mid","senior",[18,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115],{"key":19,"name":20,"count":21},"backup-recovery","Backup Recovery",75,{"key":23,"name":24,"count":21},"data-modeling","Data Modeling",{"key":26,"name":27,"count":21},"indexing","Indexing",{"key":29,"name":30,"count":21},"mongodb-aggregation","Mongodb Aggregation",{"key":32,"name":33,"count":21},"mongodb-indexes-queries","Mongodb Indexes Queries",{"key":35,"name":36,"count":21},"mongodb-operations","Mongodb Operations",{"key":38,"name":39,"count":21},"mongodb-replication-sharding","Mongodb Replication Sharding",{"key":41,"name":42,"count":21},"mongodb-schema-modeling","Mongodb Schema Modeling",{"key":44,"name":45,"count":21},"mongodb-transactions-consistency","Mongodb Transactions Consistency",{"key":47,"name":48,"count":21},"mysql-indexes","Mysql Indexes",{"key":50,"name":51,"count":21},"mysql-innodb-transactions","Mysql Innodb Transactions",{"key":53,"name":54,"count":21},"mysql-operations","Mysql Operations",{"key":56,"name":57,"count":21},"mysql-query-optimization","Mysql Query Optimization",{"key":59,"name":60,"count":21},"mysql-replication-scaling","Mysql Replication Scaling",{"key":62,"name":63,"count":21},"mysql-types-constraints","Mysql Types Constraints",{"key":65,"name":66,"count":21},"nosql-models","Nosql Models",{"key":68,"name":69,"count":21},"performance-tuning","Performance Tuning",{"key":71,"name":72,"count":21},"pg-indexes","Pg Indexes",{"key":74,"name":75,"count":21},"pg-mvcc-vacuum","Pg Mvcc Vacuum",{"key":77,"name":78,"count":21},"pg-operations","Pg Operations",{"key":80,"name":81,"count":21},"pg-query-planning","Pg Query Planning",{"key":83,"name":84,"count":21},"pg-transactions-locking","Pg Transactions Locking",{"key":86,"name":87,"count":21},"pg-types-constraints","Pg Types Constraints",{"key":89,"name":90,"count":21},"query-optimization","Query Optimization",{"key":92,"name":93,"count":21},"redis-cluster-sharding","Redis Cluster Sharding",{"key":95,"name":96,"count":21},"redis-data-structures","Redis Data Structures",{"key":98,"name":99,"count":21},"redis-expiration-eviction","Redis Expiration Eviction",{"key":101,"name":102,"count":21},"redis-persistence","Redis Persistence",{"key":104,"name":105,"count":21},"redis-replication-sentinel","Redis Replication Sentinel",{"key":107,"name":108,"count":21},"redis-transactions-scripting","Redis Transactions Scripting",{"key":110,"name":111,"count":21},"replication-scaling","Replication Scaling",{"key":113,"name":114,"count":21},"security-access","Security Access",{"key":116,"name":117,"count":21},"transactions-isolation","Transactions Isolation",[119,120,123,126],{"key":8,"name":9,"count":11},{"key":121,"name":122,"count":11},"mysql","MySQL",{"key":124,"name":125,"count":11},"postgresql","PostgreSQL",{"key":127,"name":128,"count":11},"redis","Redis",[130,148,161,175,188,201],{"id":131,"topic":30,"difficulty":132,"body":133,"options":134,"correct_key":139,"explanation":147},"019f87c2-bcd1-7940-b05c-61d3ddd80dd0",1,"MongoDB'de aggregation pipeline nedir?",[135,138,141,144],{"key":136,"text":137},"a","`find()`'ı tamamen yerine geçen tek bir sorgu operatörü",{"key":139,"text":140},"b","Her stage'in çıktısının bir sonraki stage'in girdisi olduğu, sıralı bir stage dizisi",{"key":142,"text":143},"c","Daha hızlı okuma için index'leri önceden hesaplayan bir arka plan thread'i",{"key":145,"text":146},"d","İstemci tarafında çalıştırılan, JavaScript ile yazılmış bir stored procedure","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).",{"id":149,"topic":30,"difficulty":132,"body":150,"options":151,"correct_key":136,"explanation":160},"019f87c2-bcd5-742d-a71f-97886173c475","Aggregation pipeline'da `$match` stage'i ne yapar?",[152,154,156,158],{"key":136,"text":153},"Document'ları filtreler; yalnızca verilen koşula uyanlar bir sonraki stage'e geçer",{"key":139,"text":155},"Document'taki her alanı verilen hedef isme yeniden adlandırır",{"key":142,"text":157},"Mevcut collection'ı paylaşılan bir alana göre başka bir collection ile birleştirir (join)",{"key":145,"text":159},"Document'ları bir key'e göre gruplar ve grup başına accumulator hesaplar","`$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`\u002F`$addFields`'ın işidir (b), join `$lookup`'ındır (c), gruplama `$group`'undur (d).",{"id":162,"topic":30,"difficulty":163,"body":164,"options":165,"correct_key":142,"explanation":174},"019f87c2-bcd5-7ea8-bae7-0ba61faa5ce6",2,"```js\ndb.orders.aggregate([\n  { $group: { _id: \"$status\", total: { $sum: \"$amount\" } } }\n])\n```\n`$group` içindeki `_id` alanı neyi kontrol eder?",[166,168,170,172],{"key":136,"text":167},"İsteğe bağlı bir metadata'dır, `$group` stage'inden çıkarılabilir",{"key":139,"text":169},"Her zaman her document'in orijinal MongoDB `_id` alanına işaret eder",{"key":142,"text":171},"Gruplama key'ini tanımlar — burada, her farklı `status` değeri için bir çıktı document'ı",{"key":145,"text":173},"Gruplanmış sonuçların saklanacağı çıktı collection'ının adını belirler","`$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`\u002F`$merge`'ün işidir (d).",{"id":176,"topic":30,"difficulty":132,"body":177,"options":178,"correct_key":145,"explanation":187},"019f87c2-bcd7-7c38-9d8c-d9cf23fe53a6","`$project` stage'inin temel amacı nedir?",[179,181,183,185],{"key":136,"text":180},"Alttaki collection'da diskteki istenmeyen alanları kalıcı olarak silmek",{"key":139,"text":182},"Stage'de listelenen alanlar üzerinde yeni bir index oluşturmak",{"key":142,"text":184},"Boolean bir koşulu sağlamayan document'ları filtrelemek",{"key":145,"text":186},"Document'ları yeniden şekillendirmek — çıktı için alan dahil etmek, hariç tutmak ya da hesaplamak","`$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).",{"id":189,"topic":30,"difficulty":163,"body":190,"options":191,"correct_key":139,"explanation":200},"019f87c2-bcd9-767f-9d49-3d680378a5c8","```js\n{ $group: { _id: \"$customerId\", orderCount: { $sum: 1 } } }\n```\nBurada `{ $sum: 1 }` neyi hesaplar?",[192,194,196,198],{"key":136,"text":193},"Document içinde herhangi bir yerde bulunan tüm sayısal alanların toplamı",{"key":139,"text":195},"Her grup için document sayısı, çünkü `1` her document için bir kez eklenir",{"key":142,"text":197},"Her müşteri için, tam sayı olarak ifade edilen ortalama sipariş tutarı",{"key":145,"text":199},"Gruplanan müşteri document'ları arasında görülen en yüksek `_id` değeri","`{ $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).",{"id":202,"topic":30,"difficulty":132,"body":203,"options":204,"correct_key":136,"explanation":213},"019f87c2-bcda-715b-acf3-6e59b8911c47","`$unwind` stage'i, array alanı olan bir document'a ne yapar?",[205,207,209,211],{"key":136,"text":206},"Array'i açar (deconstruct eder); array'in her elemanı için ayrı bir document üretir",{"key":139,"text":208},"Array'in elemanlarını yerinde artan sırada sıralar",{"key":142,"text":210},"Array alanını her document'tan tamamen kaldırır",{"key":145,"text":212},"Array'i virgülle ayrılmış tek bir string alanında birleştirir","`$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\u002Ffiltrelemeden önce faydalıdır. Yerinde sıralama yapmaz (b), alanı silmez (c) ve array'i string'e çevirmez (d).",{"fields":215,"seniorities":391,"interview_shapes":392,"locales":397,"oauth":399,"question_count":402,"coach_enabled":403,"jd_match_enabled":403},[216,241,261,278,302,315,324,343,365,372,378,385],{"key":217,"name_tr":218,"name_en":218,"sort":132,"specializations":219},"backend","Backend",[220,223,226,229,232,235,238],{"key":221,"name":222,"field":217},"general","Genel",{"key":224,"name":225,"field":217},"go","Go",{"key":227,"name":228,"field":217},"python","Python",{"key":230,"name":231,"field":217},"java","Java",{"key":233,"name":234,"field":217},"csharp","C#\u002F.NET",{"key":236,"name":237,"field":217},"nodejs","Node.js",{"key":239,"name":240,"field":217},"php","PHP",{"key":242,"name_tr":243,"name_en":243,"sort":163,"specializations":244},"frontend","Frontend",[245,246,249,252,255,258],{"key":221,"name":222,"field":242},{"key":247,"name":248,"field":242},"javascript","JavaScript",{"key":250,"name":251,"field":242},"typescript","TypeScript",{"key":253,"name":254,"field":242},"react","React",{"key":256,"name":257,"field":242},"vue","Vue",{"key":259,"name":260,"field":242},"angular","Angular",{"key":262,"name_tr":263,"name_en":263,"sort":264,"specializations":265},"fullstack","Fullstack",3,[266,267,268,269,270,271,272,273,274,275,276,277],{"key":221,"name":222,"field":262},{"key":224,"name":225,"field":217},{"key":227,"name":228,"field":217},{"key":230,"name":231,"field":217},{"key":233,"name":234,"field":217},{"key":236,"name":237,"field":217},{"key":239,"name":240,"field":217},{"key":247,"name":248,"field":242},{"key":250,"name":251,"field":242},{"key":253,"name":254,"field":242},{"key":256,"name":257,"field":242},{"key":259,"name":260,"field":242},{"key":279,"name_tr":280,"name_en":280,"sort":281,"specializations":282},"devops-cloud","DevOps \u002F Cloud",4,[283,284,287,290,293,296,299],{"key":221,"name":222,"field":279},{"key":285,"name":286,"field":279},"aws","AWS",{"key":288,"name":289,"field":279},"gcp","GCP",{"key":291,"name":292,"field":279},"azure","Azure",{"key":294,"name":295,"field":279},"kubernetes","Kubernetes",{"key":297,"name":298,"field":279},"terraform","Terraform",{"key":300,"name":301,"field":279},"linux","Linux",{"key":303,"name_tr":304,"name_en":304,"sort":305,"specializations":306},"ai-engineer","AI Engineer",5,[307,308,309,312],{"key":221,"name":222,"field":303},{"key":227,"name":228,"field":303},{"key":310,"name":311,"field":303},"llm-rag","LLM\u002FRAG",{"key":313,"name":314,"field":303},"mlops","MLOps",{"key":5,"name_tr":6,"name_en":316,"sort":317,"specializations":318},"Database",6,[319,320,321,322,323],{"key":221,"name":222,"field":5},{"key":124,"name":125,"field":5},{"key":121,"name":122,"field":5},{"key":8,"name":9,"field":5},{"key":127,"name":128,"field":5},{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"mobile","Mobil","Mobile",7,[330,331,334,337,340],{"key":221,"name":222,"field":325},{"key":332,"name":333,"field":325},"ios-swift","iOS (Swift)",{"key":335,"name":336,"field":325},"android-kotlin","Android (Kotlin)",{"key":338,"name":339,"field":325},"flutter","Flutter",{"key":341,"name":342,"field":325},"react-native","React Native",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"security","Güvenlik","Security",8,[349,350,353,356,359,362],{"key":221,"name":222,"field":344},{"key":351,"name":352,"field":344},"appsec","AppSec",{"key":354,"name":355,"field":344},"offensive-pentest","Offensive \u002F Pentest",{"key":357,"name":358,"field":344},"cloud-security","Cloud Security",{"key":360,"name":361,"field":344},"devsecops","DevSecOps",{"key":363,"name":364,"field":344},"blue-team-incident","Blue Team \u002F Incident",{"key":366,"name_tr":367,"name_en":368,"sort":369,"specializations":370},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[371],{"key":221,"name":222,"field":366},{"key":373,"name_tr":374,"name_en":374,"sort":375,"specializations":376},"data-engineer","Data Engineer",10,[377],{"key":221,"name":222,"field":373},{"key":379,"name_tr":380,"name_en":381,"sort":382,"specializations":383},"game-dev","Oyun Geliştirme","Game Development",11,[384],{"key":221,"name":222,"field":379},{"key":386,"name_tr":387,"name_en":387,"sort":388,"specializations":389},"ml-engineer","ML Engineer",12,[390],{"key":221,"name":222,"field":386},[14,15,16],{"junior":393,"mid":395,"senior":396},{"questions":394,"median_sec":3},20,{"questions":394,"median_sec":3},{"questions":394,"median_sec":3},[10,398],"en",[400,401],"google","github",21750,true]