{"id":30440,"date":"2025-09-27T22:41:16","date_gmt":"2025-09-27T19:41:16","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=30440"},"modified":"2025-09-27T22:41:16","modified_gmt":"2025-09-27T19:41:16","slug":"mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/","title":{"rendered":"MongoDB Shell&#8217;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye"},"content":{"rendered":"<p><body><\/p>\n<h2>MongoDB Shell&#8217;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye<\/h2>\n<p>MongoDB, modern uygulamalar\u0131n veri depolama ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak \u00fczere tasarlanm\u0131\u015f pop\u00fcler bir NoSQL veritaban\u0131d\u0131r. Esnek \u015fema yap\u0131s\u0131, y\u00fcksek performans ve yatay \u00f6l\u00e7eklenebilirlik gibi \u00f6zellikleriyle \u00f6ne \u00e7\u0131kar. MongoDB ile etkile\u015fim kurman\u0131n en do\u011frudan ve g\u00fc\u00e7l\u00fc yollar\u0131ndan biri, MongoDB Shell&#8217;dir. Bu makale, MongoDB Shell&#8217;in temel kullan\u0131m\u0131ndan ileri seviye \u00f6zelliklerine kadar geni\u015f bir yelpazeyi kapsayarak, veritaban\u0131 y\u00f6neticileri ve geli\u015ftiricilerin bu g\u00fc\u00e7l\u00fc arac\u0131 etkin bir \u015fekilde kullanmalar\u0131na yard\u0131mc\u0131 olmay\u0131 ama\u00e7lamaktad\u0131r.<\/p>\n<h2>Giri\u015f: MongoDB Shell Nedir ve Neden \u00d6nemlidir?<\/h2>\n<p>MongoDB Shell, MongoDB veritaban\u0131 ile etkile\u015fim kurmak i\u00e7in kullan\u0131lan interaktif bir JavaScript aray\u00fcz\u00fcd\u00fcr. Komut sat\u0131r\u0131ndan \u00e7al\u0131\u015f\u0131r ve veritaban\u0131 i\u015flemleri, sorgulama, y\u00f6netim g\u00f6revleri ve betik \u00e7al\u0131\u015ft\u0131rma gibi bir\u00e7ok farkl\u0131 ama\u00e7 i\u00e7in kullan\u0131labilir. Eski <code>mongo<\/code> kabu\u011funun yerini alan <code>mongosh<\/code>, geli\u015ftirilmi\u015f \u00f6zellikler, daha iyi hata mesajlar\u0131, ak\u0131ll\u0131 otomatik tamamlama ve s\u00f6zdizimi vurgulama gibi modern geli\u015ftirmelerle birlikte gelir.<\/p>\n<p>MongoDB Shell&#8217;in \u00f6nemi birka\u00e7 ana noktada toplanabilir:<\/p>\n<p>*   <strong>Do\u011frudan Etkile\u015fim:<\/strong> Veritaban\u0131na do\u011frudan ba\u011flanarak an\u0131nda sorgular \u00e7al\u0131\u015ft\u0131rabilir, veri ekleyebilir, g\u00fcncelleyebilir ve silebilirsiniz.<br \/>\n*   <strong>Y\u00f6netim Kolayl\u0131\u011f\u0131:<\/strong> Veritaban\u0131 ve koleksiyon olu\u015fturma, indeks y\u00f6netimi, kullan\u0131c\u0131 y\u00f6netimi, replika setleri ve shard cluster y\u00f6netimi gibi idari g\u00f6revleri kolayca ger\u00e7ekle\u015ftirebilirsiniz.<br \/>\n*   <strong>Geli\u015ftirme ve Hata Ay\u0131klama:<\/strong> Uygulama geli\u015ftirenler, veritaban\u0131 etkile\u015fimlerini test etmek, sorgular\u0131 optimize etmek ve hatalar\u0131 ay\u0131klamak i\u00e7in shell&#8217;i etkin bir \u015fekilde kullanabilirler.<br \/>\n*   <strong>Betik Olu\u015fturma:<\/strong> Tekrarlayan g\u00f6revleri otomatikle\u015ftirmek veya karma\u015f\u0131k veri manip\u00fclasyonlar\u0131 yapmak i\u00e7in JavaScript betikleri yaz\u0131p \u00e7al\u0131\u015ft\u0131rabilirsiniz.<br \/>\n*   <strong>\u00d6\u011frenme ve Ke\u015fif:<\/strong> MongoDB&#8217;nin veri modelini ve sorgu dilini \u00f6\u011frenmek i\u00e7in m\u00fckemmel bir ara\u00e7t\u0131r.<\/p>\n<p>Bu makale boyunca, <code>mongosh<\/code>&#8216;un kurulumundan ba\u015flayarak, temel CRUD (Create, Read, Update, Delete) operasyonlar\u0131na, indeks y\u00f6netimine, agregasyon \u00e7er\u00e7evesine ve daha ileri seviye \u00f6zelliklere kadar ad\u0131m ad\u0131m ilerleyece\u011fiz.<\/p>\n<h2>Kurulum ve \u0130lk Ad\u0131mlar<\/h2>\n<p>MongoDB Shell&#8217;i kullanmaya ba\u015flamadan \u00f6nce, sisteminizde MongoDB sunucusunun (mongod) ve MongoDB Shell&#8217;in (<code>mongosh<\/code>) kurulu olmas\u0131 gerekir. Genellikle <code>mongosh<\/code>, MongoDB sunucusu ile birlikte da\u011f\u0131t\u0131l\u0131r, ancak ayr\u0131 olarak da kurulabilir.<\/p>\n<h3>MongoDB Shell Kurulumu<\/h3>\n<p>E\u011fer MongoDB sunucusunu kurduysan\u0131z, <code>mongosh<\/code> genellikle PATH&#8217;inize eklenmi\u015f olmal\u0131d\u0131r. Kurulumunuzu kontrol etmek i\u00e7in bir terminal veya komut istemcisi a\u00e7\u0131p a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">mongosh --version<\/code><\/pre>\n<p>E\u011fer komut bulunamazsa veya s\u00fcr\u00fcm bilgisi gelmezse, <code>mongosh<\/code>&#8216;u resmi MongoDB web sitesinden veya paket y\u00f6neticiniz arac\u0131l\u0131\u011f\u0131yla (\u00f6rn. <code>brew<\/code> macOS&#8217;ta, <code>apt<\/code> Ubuntu&#8217;da) ayr\u0131 olarak indirip kurman\u0131z gerekebilir.<\/p>\n<h3>Shell&#8217;i Ba\u015flatma ve Ba\u011flant\u0131 Kurma<\/h3>\n<p><code>mongosh<\/code>&#8216;u ba\u015flatmak ve bir MongoDB sunucusuna ba\u011flanmak olduk\u00e7a basittir.<\/p>\n<p><strong>Varsay\u0131lan Ba\u011flant\u0131:<\/strong><br \/>\nE\u011fer MongoDB sunucunuz varsay\u0131lan port olan <code>27017<\/code> \u00fczerinde ve yerel makinenizde \u00e7al\u0131\u015f\u0131yorsa, sadece <code>mongosh<\/code> yazarak ba\u011flanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">mongosh<\/code><\/pre>\n<p>Bu komut, <code>mongodb:\/\/127.0.0.1:27017<\/code> adresine ba\u011flanmaya \u00e7al\u0131\u015facakt\u0131r.<\/p>\n<p><strong>Farkl\u0131 Host ve Port Belirtme:<\/strong><br \/>\nE\u011fer veritaban\u0131 sunucunuz farkl\u0131 bir IP adresinde veya portta \u00e7al\u0131\u015f\u0131yorsa, <code>host<\/code> ve <code>port<\/code> parametrelerini kullanman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">mongosh --host <IP_ADRESI_VEYA_HOSTNAME> --port <PORT_NUMARASI><\/code><\/pre>\n<p>\u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-bash\">mongosh --host 192.168.1.100 --port 27018<\/code><\/pre>\n<p><strong>Kimlik Do\u011frulama ile Ba\u011flanma:<\/strong><br \/>\nE\u011fer MongoDB sunucunuz kimlik do\u011frulama gerektiriyorsa, kullan\u0131c\u0131 ad\u0131 ve parola ile ba\u011flanman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">mongosh --username <KULLANICI_ADI> --password <PAROLA> --authenticationDatabase <KIMLIK_DOGRULAMA_VERITABANI><\/code><\/pre>\n<p><code>--authenticationDatabase<\/code> genellikle kullan\u0131c\u0131 bilgilerinin sakland\u0131\u011f\u0131 <code>admin<\/code> veritaban\u0131 olur. Parolan\u0131z\u0131 komut sat\u0131r\u0131nda a\u00e7\u0131k\u00e7a belirtmek yerine, <code>mongosh<\/code> genellikle parola girmeniz i\u00e7in sizi uyaracakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">mongosh --username myUser --authenticationDatabase admin<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, sizden parolan\u0131z\u0131 girmeniz istenecektir.<\/p>\n<p>Ba\u011flant\u0131 ba\u015far\u0131l\u0131 oldu\u011funda, <code>mongosh<\/code> prompt&#8217;unu g\u00f6receksiniz (\u00f6rn. <code>test><\/code>). Bu, komutlar\u0131n\u0131z\u0131 girmeye haz\u0131r oldu\u011funuz anlam\u0131na gelir.<\/p>\n<h2>Temel Shell Komutlar\u0131 ve Veritaban\u0131 \u0130\u015flemleri<\/h2>\n<p>Ba\u011flant\u0131 kurduktan sonra, MongoDB Shell ile veritaban\u0131 ve koleksiyon d\u00fczeyinde \u00e7e\u015fitli i\u015flemler yapabiliriz.<\/p>\n<h3>Veritabanlar\u0131 ile \u00c7al\u0131\u015fma<\/h3>\n<p>*   <strong>Mevcut Veritabanlar\u0131n\u0131 Listeleme:<\/strong><\/p>\n<pre><code class=\"language-javascript\">show dbs<\/code><\/pre>\n<p>    Bu komut, sunucudaki t\u00fcm veritabanlar\u0131n\u0131 ve boyutlar\u0131n\u0131 listeler.<\/p>\n<p>*   <strong>Veritaban\u0131 Se\u00e7me veya Olu\u015fturma:<\/strong><\/p>\n<pre><code class=\"language-javascript\">use <veritabani_adi><\/code><\/pre>\n<p>    E\u011fer belirtilen veritaban\u0131 mevcutsa, o veritaban\u0131na ge\u00e7i\u015f yapar. E\u011fer mevcut de\u011filse, o isimde yeni bir veritaban\u0131 olu\u015fturur (ilk veri eklendi\u011finde fiziksel olarak olu\u015fur).<\/p>\n<p>    \u00d6rnek:<\/p>\n<pre><code class=\"language-javascript\">use myDatabase<\/code><\/pre>\n<p>    Art\u0131k <code>myDatabase<\/code> i\u00e7indeyiz. Prompt <code>myDatabase><\/code> olarak de\u011fi\u015fecektir.<\/p>\n<p>*   <strong>Mevcut Veritaban\u0131n\u0131 G\u00f6sterme:<\/strong><\/p>\n<pre><code class=\"language-javascript\">db<\/code><\/pre>\n<p>    Bu komut, \u015fu anda hangi veritaban\u0131nda oldu\u011funuzu g\u00f6sterir.<\/p>\n<p>*   <strong>Veritaban\u0131n\u0131 Silme:<\/strong><\/p>\n<pre><code class=\"language-javascript\">db.dropDatabase()<\/code><\/pre>\n<p>    Bu komut, \u015fu anda se\u00e7ili olan veritaban\u0131n\u0131 ve t\u00fcm koleksiyonlar\u0131n\u0131 kal\u0131c\u0131 olarak siler. <strong>Dikkatli kullan\u0131lmal\u0131d\u0131r!<\/strong><\/p>\n<h3>Koleksiyonlar ile \u00c7al\u0131\u015fma<\/h3>\n<p>MongoDB&#8217;de veriler koleksiyonlar i\u00e7inde saklan\u0131r. Koleksiyonlar, ili\u015fkisel veritabanlar\u0131ndaki tablolara benzer.<\/p>\n<p>*   <strong>Mevcut Koleksiyonlar\u0131 Listeleme:<\/strong><\/p>\n<pre><code class=\"language-javascript\">show collections<\/code><\/pre>\n<p>    Se\u00e7ili veritaban\u0131ndaki t\u00fcm koleksiyonlar\u0131 listeler.<\/p>\n<p>*   <strong>Koleksiyon Olu\u015fturma:<\/strong><br \/>\n    Koleksiyonlar genellikle ilk belge eklendi\u011finde otomatik olarak olu\u015fturulur. Ancak, \u00f6zel se\u00e7eneklerle (\u00f6rn. sabit boyutlu koleksiyon &#8211; capped collection) manuel olarak da olu\u015fturulabilir:<\/p>\n<pre><code class=\"language-javascript\">db.createCollection(\"myCollection\", { capped: true, size: 100000 })<\/code><\/pre>\n<p>    Bu komut, 100KB boyutunda bir <code>myCollection<\/code> ad\u0131nda sabit boyutlu bir koleksiyon olu\u015fturur.<\/p>\n<p>*   <strong>Koleksiyonu Silme:<\/strong><\/p>\n<pre><code class=\"language-javascript\">db.<koleksiyon_adi>.drop()<\/code><\/pre>\n<p>    Belirtilen koleksiyonu ve i\u00e7erdi\u011fi t\u00fcm belgeleri siler. <strong>Yine dikkatli kullan\u0131lmal\u0131d\u0131r!<\/strong><\/p>\n<p>    \u00d6rnek:<\/p>\n<pre><code class=\"language-javascript\">db.myCollection.drop()<\/code><\/pre>\n<h3>CRUD Operasyonlar\u0131<\/h3>\n<p>CRUD, Create (Ekleme), Read (Okuma), Update (G\u00fcncelleme) ve Delete (Silme) i\u015flemlerini ifade eder ve veritaban\u0131 etkile\u015fimlerinin temelini olu\u015fturur.<\/p>\n<h4>Create (Ekleme)<\/h4>\n<p>MongoDB&#8217;de veriler, BSON (Binary JSON) format\u0131nda belgeler olarak saklan\u0131r. Belgeler, anahtar-de\u011fer \u00e7iftlerinden olu\u015fur ve JSON&#8217;a olduk\u00e7a benzer.<\/p>\n<p>*   <strong>Tek Belge Ekleme:<\/strong><br \/>\n    <code>insertOne()<\/code> metodu, bir koleksiyona tek bir belge eklemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">db.users.insertOne({\n        name: \"Alice\",\n        age: 30,\n        email: \"alice@example.com\",\n        address: {\n            street: \"123 Main St\",\n            city: \"Anytown\",\n            zip: \"12345\"\n        },\n        hobbies: [\"reading\", \"hiking\"]\n    })<\/code><\/pre>\n<p>    MongoDB, her belgeye otomatik olarak benzersiz bir <code>_id<\/code> alan\u0131 atar.<\/p>\n<p>*   <strong>Birden Fazla Belge Ekleme:<\/strong><br \/>\n    <code>insertMany()<\/code> metodu, bir dizi belgeyi tek bir i\u015flemde eklemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">db.products.insertMany([\n        { name: \"Laptop\", price: 1200, category: \"Electronics\", inStock: true },\n        { name: \"Mouse\", price: 25, category: \"Electronics\", inStock: true },\n        { name: \"Keyboard\", price: 75, category: \"Electronics\", inStock: false }\n    ])<\/code><\/pre>\n<h4>Read (Okuma\/Sorgulama)<\/h4>\n<p>MongoDB&#8217;nin g\u00fc\u00e7l\u00fc sorgulama yetenekleri, belirli kriterlere uyan belgeleri bulman\u0131z\u0131 sa\u011flar.<\/p>\n<p>*   <strong>T\u00fcm Belgeleri Bulma:<\/strong><br \/>\n    <code>find()<\/code> metodu, bir koleksiyondaki t\u00fcm belgeleri d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">db.users.find()<\/code><\/pre>\n<p>    Bu, belgeleri okunabilir bir formatta d\u00f6nd\u00fcr\u00fcr. Daha g\u00fczel bir \u00e7\u0131kt\u0131 i\u00e7in <code>pretty()<\/code> metodunu zincirleyebilirsiniz:<\/p>\n<pre><code class=\"language-javascript\">db.users.find().pretty()<\/code><\/pre>\n<p>*   <strong>Tek Belge Bulma:<\/strong><br \/>\n    <code>findOne()<\/code> metodu, sorgu kriterlerine uyan ilk belgeyi d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">db.users.findOne({ name: \"Alice\" })<\/code><\/pre>\n<p>*   <strong>Filtreleme (Sorgu Kriterleri):<\/strong><br \/>\n    <code>find()<\/code> metoduna bir sorgu belgesi (JSON nesnesi) ge\u00e7irerek belirli kriterlere uyan belgeleri filtreleyebilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">db.products.find({ category: \"Electronics\", price: { $gt: 50 } })<\/code><\/pre>\n<p>    Bu sorgu, kategorisi &#8220;Electronics&#8221; olan ve fiyat\u0131 50&#8217;den b\u00fcy\u00fck olan \u00fcr\u00fcnleri bulur. <code>$gt<\/code> (greater than) gibi sorgu operat\u00f6rleri kullan\u0131l\u0131r.<\/p>\n<p>*   <strong>Sorgu Operat\u00f6rleri:<\/strong><br \/>\n    MongoDB, zengin bir sorgu operat\u00f6rleri setine sahiptir:<br \/>\n    *   <strong>Kar\u015f\u0131la\u015ft\u0131rma:<\/strong> <code>$eq<\/code> (e\u015fit), <code>$ne<\/code> (e\u015fit de\u011fil), <code>$gt<\/code> (b\u00fcy\u00fck), <code>$gte<\/code> (b\u00fcy\u00fck veya e\u015fit), <code>$lt<\/code> (k\u00fc\u00e7\u00fck), <code>$lte<\/code> (k\u00fc\u00e7\u00fck veya e\u015fit), <code>$in<\/code> (dizide), <code>$nin<\/code> (dizide de\u011fil).<br \/>\n    *   <strong>Mant\u0131ksal:<\/strong> <code>$and<\/code>, <code>$or<\/code>, <code>$not<\/code>, <code>$nor<\/code>.<br \/>\n    *   <strong>Eleman:<\/strong> <code>$exists<\/code> (alan var m\u0131), <code>$type<\/code> (alan\u0131n tipi).<br \/>\n    *   <strong>Dizi:<\/strong> <code>$all<\/code> (t\u00fcm elemanlar\u0131 i\u00e7erir), <code>$size<\/code> (dizi boyutu), <code>$elemMatch<\/code> (dizi elemanlar\u0131n\u0131n t\u00fcm kriterleri kar\u015f\u0131lamas\u0131).<br \/>\n    *   <strong>Regex:<\/strong> <code>$regex<\/code> (d\u00fczenli ifade e\u015fle\u015fmesi).<\/p>\n<p>    \u00d6rnekler:<\/p>\n<pre><code class=\"language-javascript\">\/\/ Ya\u015f\u0131 25 ile 35 aras\u0131nda olan kullan\u0131c\u0131lar\n    db.users.find({ age: { $gte: 25, $lte: 35 } })\n\n    \/\/ Ad\u0131 \"Alice\" VEYA ya\u015f\u0131 40'tan b\u00fcy\u00fck olan kullan\u0131c\u0131lar\n    db.users.find({ $or: [{ name: \"Alice\" }, { age: { $gt: 40 } }] })\n\n    \/\/ Adresinde \"Main St\" i\u00e7eren kullan\u0131c\u0131lar\n    db.users.find({ \"address.street\": \/Main St\/i }) \/\/ 'i' case-insensitive yapar<\/code><\/pre>\n<p>*   <strong>Projeksiyon (Alan Se\u00e7imi):<\/strong><br \/>\n    <code>find()<\/code> metodunun ikinci parametresi, hangi alanlar\u0131n d\u00f6nd\u00fcr\u00fclece\u011fini belirtmek i\u00e7in kullan\u0131l\u0131r. <code>1<\/code> ile dahil edilir, <code>0<\/code> ile hari\u00e7 tutulur (ancak <code>_id<\/code> varsay\u0131lan olarak dahildir, hari\u00e7 tutmak i\u00e7in <code>0<\/code> vermelisiniz).<\/p>\n<pre><code class=\"language-javascript\">\/\/ Sadece isim ve email alanlar\u0131n\u0131 getir, _id'yi hari\u00e7 tut\n    db.users.find({}, { name: 1, email: 1, _id: 0 })<\/code><\/pre>\n<p>*   <strong>S\u0131ralama, Limit ve Atlatma:<\/strong><br \/>\n    *   <code>sort()<\/code>: Sonu\u00e7lar\u0131 belirli bir alana g\u00f6re s\u0131ralar (<code>1<\/code> artan, <code>-1<\/code> azalan).<br \/>\n    *   <code>limit()<\/code>: D\u00f6nd\u00fcr\u00fclecek belge say\u0131s\u0131n\u0131 s\u0131n\u0131rlar.<br \/>\n    *   <code>skip()<\/code>: Belirtilen say\u0131da belgeyi atlar (sayfaland\u0131rma i\u00e7in kullan\u0131\u015fl\u0131d\u0131r).<\/p>\n<pre><code class=\"language-javascript\">\/\/ Ya\u015fa g\u00f6re azalan s\u0131rada ilk 5 kullan\u0131c\u0131y\u0131 getir\n    db.users.find().sort({ age: -1 }).limit(5)\n\n    \/\/ \u0130kinci sayfadaki (10 belge\/sayfa) kullan\u0131c\u0131lar\u0131 getir\n    db.users.find().sort({ name: 1 }).skip(10).limit(10)<\/code><\/pre>\n<h4>Update (G\u00fcncelleme)<\/h4>\n<p>Belgelerdeki verileri de\u011fi\u015ftirmek i\u00e7in g\u00fcncelleme operasyonlar\u0131 kullan\u0131l\u0131r.<\/p>\n<p>*   <strong>Tek Belgeyi G\u00fcncelleme:<\/strong><br \/>\n    <code>updateOne()<\/code> metodu, sorgu kriterlerine uyan ilk belgeyi g\u00fcnceller. Genellikle <code>$set<\/code> operat\u00f6r\u00fc kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">db.users.updateOne(\n        { name: \"Alice\" }, \/\/ Sorgu kriteri\n        { $set: { age: 31, \"address.city\": \"Newtown\" } } \/\/ G\u00fcncelleme operasyonu\n    )<\/code><\/pre>\n<p>    E\u011fer <code>age<\/code> alan\u0131 yoksa, <code>$set<\/code> onu olu\u015fturur.<\/p>\n<p>*   <strong>Birden Fazla Belgeyi G\u00fcncelleme:<\/strong><br \/>\n    <code>updateMany()<\/code> metodu, sorgu kriterlerine uyan t\u00fcm belgeleri g\u00fcnceller.<\/p>\n<pre><code class=\"language-javascript\">db.products.updateMany(\n        { category: \"Electronics\", inStock: true },\n        { $inc: { price: 10 } } \/\/ Fiyat\u0131 10 art\u0131r\n    )<\/code><\/pre>\n<p>    <code>$inc<\/code> operat\u00f6r\u00fc, say\u0131sal bir alan\u0131 belirli bir miktar kadar art\u0131r\u0131r veya azalt\u0131r.<\/p>\n<p>*   <strong>G\u00fcncelleme Operat\u00f6rleri:<\/strong><br \/>\n    *   <code>$set<\/code>: Bir alan\u0131n de\u011ferini ayarlar veya yeni bir alan ekler.<br \/>\n    *   <code>$unset<\/code>: Bir alan\u0131 belgeden kald\u0131r\u0131r.<br \/>\n    *   <code>$inc<\/code>: Say\u0131sal bir alan\u0131n de\u011ferini art\u0131r\u0131r veya azalt\u0131r.<br \/>\n    *   <code>$push<\/code>: Bir diziye eleman ekler.<br \/>\n    *   <code>$pull<\/code>: Bir diziden elemanlar\u0131 kald\u0131r\u0131r.<br \/>\n    *   <code>$addToSet<\/code>: Bir diziye yaln\u0131zca benzersiz elemanlar ekler.<br \/>\n    *   <code>$rename<\/code>: Bir alan\u0131n ad\u0131n\u0131 de\u011fi\u015ftirir.<\/p>\n<p>    \u00d6rnek:<\/p>\n<pre><code class=\"language-javascript\">\/\/ Alice'in hobilerine \"gardening\" ekle (e\u011fer yoksa)\n    db.users.updateOne(\n        { name: \"Alice\" },\n        { $addToSet: { hobbies: \"gardening\" } }\n    )\n\n    \/\/ Alice'in email alan\u0131n\u0131 kald\u0131r\n    db.users.updateOne(\n        { name: \"Alice\" },\n        { $unset: { email: \"\" } }\n    )<\/code><\/pre>\n<h4>Delete (Silme)<\/h4>\n<p>Belgeleri koleksiyonlardan silmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>*   <strong>Tek Belge Silme:<\/strong><br \/>\n    <code>deleteOne()<\/code> metodu, sorgu kriterlerine uyan ilk belgeyi siler.<\/p>\n<pre><code class=\"language-javascript\">db.products.deleteOne({ name: \"Keyboard\" })<\/code><\/pre>\n<p>*   <strong>Birden Fazla Belge Silme:<\/strong><br \/>\n    <code>deleteMany()<\/code> metodu, sorgu kriterlerine uyan t\u00fcm belgeleri siler.<\/p>\n<pre><code class=\"language-javascript\">db.users.deleteMany({ age: { $lt: 20 } }) \/\/ Ya\u015f\u0131 20'den k\u00fc\u00e7\u00fck t\u00fcm kullan\u0131c\u0131lar\u0131 sil<\/code><\/pre>\n<p>*   <strong>T\u00fcm Belgeleri Silme:<\/strong><br \/>\n    Bir koleksiyondaki t\u00fcm belgeleri silmek i\u00e7in bo\u015f bir sorgu belgesi kullanabilirsiniz:<\/p>\n<pre><code class=\"language-javascript\">db.myCollection.deleteMany({})<\/code><\/pre>\n<p>    Bu, <code>db.myCollection.drop()<\/code>&#8216;a g\u00f6re daha yava\u015ft\u0131r \u00e7\u00fcnk\u00fc her belge i\u00e7in ayr\u0131 ayr\u0131 i\u015flem yapar. Koleksiyonu tamamen silmek yerine sadece i\u00e7eri\u011fini bo\u015faltmak istiyorsan\u0131z tercih edilebilir.<\/p>\n<h2>\u0130leri Seviye Shell Kullan\u0131m\u0131 ve \u00d6zellikler<\/h2>\n<p>MongoDB Shell, temel CRUD i\u015flemlerinin \u00f6tesinde, veritaban\u0131 y\u00f6netimi ve karma\u015f\u0131k veri analizi i\u00e7in bir dizi g\u00fc\u00e7l\u00fc \u00f6zellik sunar.<\/p>\n<h3>\u0130ndeksler<\/h3>\n<p>\u0130ndeksler, MongoDB&#8217;de sorgu performans\u0131n\u0131 art\u0131rmak i\u00e7in hayati \u00f6neme sahiptir. \u0130li\u015fkisel veritabanlar\u0131ndaki indekslere benzer \u015fekilde \u00e7al\u0131\u015f\u0131rlar.<\/p>\n<p>*   <strong>\u0130ndeks Olu\u015fturma:<\/strong><br \/>\n    <code>createIndex()<\/code> metodu, bir koleksiyonda indeks olu\u015fturur. \u0130lk parametre indekslenecek alan\u0131 (veya alanlar\u0131), ikinci parametre ise indeks se\u00e7eneklerini (\u00f6rn. <code>unique<\/code>, <code>sparse<\/code>, <code>background<\/code>) belirtir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ 'email' alan\u0131nda tekil (unique) bir indeks olu\u015ftur\n    db.users.createIndex({ email: 1 }, { unique: true })\n\n    \/\/ 'category' ve 'price' alanlar\u0131nda bile\u015fik indeks olu\u015ftur\n    db.products.createIndex({ category: 1, price: -1 })<\/code><\/pre>\n<p>    <code>1<\/code> artan s\u0131ralama, <code>-1<\/code> azalan s\u0131ralama anlam\u0131na gelir.<\/p>\n<p>*   <strong>Mevcut \u0130ndeksleri Listeleme:<\/strong><\/p>\n<pre><code class=\"language-javascript\">db.users.getIndexes()<\/code><\/pre>\n<p>    Bu komut, bir koleksiyondaki t\u00fcm indeksleri listeler.<\/p>\n<p>*   <strong>\u0130ndeks Silme:<\/strong><br \/>\n    <code>dropIndex()<\/code> metodu, bir indeksi siler. \u0130ndeksin ad\u0131n\u0131 veya indeks tan\u0131m\u0131n\u0131 kullanarak silebilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">\/\/ \u0130ndeks ad\u0131yla silme (genellikle indekslenen alan\u0131n ve s\u0131ralaman\u0131n birle\u015fimi olur)\n    db.users.dropIndex(\"email_1\")\n\n    \/\/ \u0130ndeks tan\u0131m\u0131yla silme\n    db.products.dropIndex({ category: 1, price: -1 })<\/code><\/pre>\n<p>    T\u00fcm indeksleri silmek i\u00e7in <code>dropIndexes()<\/code> kullan\u0131labilir (ancak <code>_id<\/code> indeksi silinmez).<\/p>\n<h3>Agregasyon \u00c7er\u00e7evesi<\/h3>\n<p>Agregasyon \u00c7er\u00e7evesi, verileri i\u015flemek ve analiz etmek i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Verileri bir dizi a\u015famadan (pipeline) ge\u00e7irerek d\u00f6n\u00fc\u015ft\u00fcrmenize ve toplaman\u0131za olanak tan\u0131r.<\/p>\n<p>*   <strong><code>aggregate()<\/code> Metodu:<\/strong><br \/>\n    <code>aggregate()<\/code> metodu, bir dizi agregasyon a\u015famas\u0131n\u0131 parametre olarak al\u0131r.<\/p>\n<pre><code class=\"language-javascript\">db.orders.aggregate([\n        { $match: { status: \"completed\" } }, \/\/ Sadece tamamlanm\u0131\u015f sipari\u015fleri filtrele\n        { $group: { \/\/ M\u00fc\u015fteri ba\u015f\u0131na toplam geliri hesapla\n            _id: \"$customerId\",\n            totalRevenue: { $sum: \"$amount\" },\n            orderCount: { $sum: 1 }\n        }},\n        { $sort: { totalRevenue: -1 } }, \/\/ Toplam gelire g\u00f6re azalan s\u0131rada s\u0131rala\n        { $limit: 5 } \/\/ En \u00e7ok harcayan ilk 5 m\u00fc\u015fteriyi getir\n    ])<\/code><\/pre>\n<p>*   <strong>Yayg\u0131n Agregasyon A\u015famalar\u0131:<\/strong><br \/>\n    *   <code>$match<\/code>: Belgeleri filtreler (sorgu operat\u00f6rleri ile ayn\u0131).<br \/>\n    *   <code>$project<\/code>: Belgelerin yap\u0131s\u0131n\u0131 yeniden \u015fekillendirir, alanlar\u0131 dahil eder\/hari\u00e7 tutar, yeni alanlar hesaplar.<br \/>\n    *   <code>$group<\/code>: Belgeleri belirli bir alana g\u00f6re gruplar ve grup ba\u015f\u0131na toplama i\u015flemleri yapar (<code>$sum<\/code>, <code>$avg<\/code>, <code>$min<\/code>, <code>$max<\/code>, <code>$push<\/code>, <code>$addToSet<\/code>).<br \/>\n    *   <code>$sort<\/code>: Belgeleri s\u0131ralar.<br \/>\n    *   <code>$limit<\/code>: Belge say\u0131s\u0131n\u0131 s\u0131n\u0131rlar.<br \/>\n    *   <code>$skip<\/code>: Belirli say\u0131da belgeyi atlar.<br \/>\n    *   <code>$unwind<\/code>: Bir diziyi &#8220;a\u00e7ar&#8221;, dizideki her eleman i\u00e7in ayr\u0131 bir belge olu\u015fturur.<br \/>\n    *   <code>$lookup<\/code>: Di\u011fer koleksiyonlardan veri birle\u015ftirir (SQL JOIN benzeri).<\/p>\n<p>    Agregasyon, karma\u015f\u0131k raporlama ve veri analizi i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<h3>Kullan\u0131c\u0131lar ve Rol Y\u00f6netimi<\/h3>\n<p>G\u00fcvenli bir MongoDB ortam\u0131 i\u00e7in kullan\u0131c\u0131 ve rol y\u00f6netimi kritik \u00f6neme sahiptir.<\/p>\n<p>*   <strong>Kullan\u0131c\u0131 Olu\u015fturma:<\/strong><br \/>\n    <code>createUser()<\/code> metodu, yeni bir kullan\u0131c\u0131 olu\u015fturur ve ona roller atar.<\/p>\n<pre><code class=\"language-javascript\">db.createUser(\n        {\n            user: \"myAppUser\",\n            pwd: passwordPrompt(), \/\/ Parolay\u0131 g\u00fcvenli bir \u015fekilde ister\n            roles: [\n                { role: \"readWrite\", db: \"myDatabase\" },\n                { role: \"read\", db: \"admin\" }\n            ]\n        }\n    )<\/code><\/pre>\n<p>    <code>passwordPrompt()<\/code> kullan\u0131m\u0131, parolan\u0131n komut ge\u00e7mi\u015finde g\u00f6r\u00fcnmesini engeller.<\/p>\n<p>*   <strong>Roller Atama\/\u0130ptal Etme:<\/strong><br \/>\n    *   <code>grantRolesToUser()<\/code>: Mevcut bir kullan\u0131c\u0131ya yeni roller atar.<br \/>\n    *   <code>revokeRolesFromUser()<\/code>: Bir kullan\u0131c\u0131n\u0131n rollerini iptal eder.<\/p>\n<pre><code class=\"language-javascript\">db.grantRolesToUser(\n        \"myAppUser\",\n        [{ role: \"dbAdmin\", db: \"myDatabase\" }]\n    )\n\n    db.revokeRolesFromUser(\n        \"myAppUser\",\n        [{ role: \"read\", db: \"admin\" }]\n    )<\/code><\/pre>\n<p>*   <strong>Kullan\u0131c\u0131 Silme:<\/strong><\/p>\n<pre><code class=\"language-javascript\">db.dropUser(\"myAppUser\")<\/code><\/pre>\n<h3>Yedekleme ve Geri Y\u00fckleme (Shell D\u0131\u015f\u0131 Ara\u00e7lar)<\/h3>\n<p>MongoDB Shell do\u011frudan yedekleme ve geri y\u00fckleme yapmasa da, genellikle shell ile birlikte kullan\u0131lan komut sat\u0131r\u0131 ara\u00e7lar\u0131 olan <code>mongodump<\/code> ve <code>mongorestore<\/code>&#8216;dan bahsetmek \u00f6nemlidir.<\/p>\n<p>*   <strong><code>mongodump<\/code>:<\/strong> MongoDB veritabanlar\u0131n\u0131 veya koleksiyonlar\u0131n\u0131 BSON format\u0131nda yedeklemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">mongodump --db myDatabase --out \/path\/to\/backup\/directory<\/code><\/pre>\n<p>*   <strong><code>mongorestore<\/code>:<\/strong> <code>mongodump<\/code> ile olu\u015fturulan yedekleri geri y\u00fcklemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">mongorestore --db myDatabase --drop \/path\/to\/backup\/directory\/myDatabase<\/code><\/pre>\n<p>    <code>--drop<\/code> se\u00e7ene\u011fi, geri y\u00fcklemeden \u00f6nce mevcut veritaban\u0131n\u0131 siler.<\/p>\n<p>Ayr\u0131ca, verileri JSON veya CSV format\u0131nda d\u0131\u015fa ve i\u00e7e aktarmak i\u00e7in <code>mongoexport<\/code> ve <code>mongoimport<\/code> ara\u00e7lar\u0131 da mevcuttur.<\/p>\n<h3>JavaScript Entegrasyonu<\/h3>\n<p>MongoDB Shell, JavaScript motorunu kullanarak \u00e7al\u0131\u015f\u0131r. Bu, shell i\u00e7inde karma\u015f\u0131k betikler yazman\u0131za ve \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r.<\/p>\n<p>*   <strong>Shell&#8217;de JavaScript \u00c7al\u0131\u015ft\u0131rma:<\/strong><br \/>\n    Do\u011frudan shell prompt&#8217;unda JavaScript kodu yazabilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">var x = 10;\n    var y = 20;\n    print(x + y); \/\/ \u00c7\u0131kt\u0131: 30<\/code><\/pre>\n<p>*   <strong>Fonksiyon Tan\u0131mlama ve Kullanma:<\/strong><br \/>\n    Tekrarlayan g\u00f6revler i\u00e7in kendi JavaScript fonksiyonlar\u0131n\u0131z\u0131 tan\u0131mlayabilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">function findOldUsers(minAge) {\n        return db.users.find({ age: { $gte: minAge } });\n    }\n\n    findOldUsers(50).pretty();<\/code><\/pre>\n<p>*   <strong>Betikleri \u00c7al\u0131\u015ft\u0131rma (<code>load()<\/code>):<\/strong><br \/>\n    Harici bir JavaScript dosyas\u0131n\u0131 shell&#8217;e y\u00fcklemek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>load()<\/code> fonksiyonunu kullanabilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">\/\/ my_script.js dosyas\u0131n\u0131n i\u00e7eri\u011fi:\n    \/\/ db.products.find({ price: { $lt: 50 } }).forEach(function(doc) {\n    \/\/     printjson(doc);\n    \/\/ });\n\n    load(\"my_script.js\")<\/code><\/pre>\n<p>    Bu, karma\u015f\u0131k veya uzun betikleri y\u00f6netmek i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>*   <strong><code>.mongoshrc.js<\/code> Dosyas\u0131:<\/strong><br \/>\n    <code>mongosh<\/code> ba\u015flad\u0131\u011f\u0131nda otomatik olarak y\u00fcklenen bir JavaScript dosyas\u0131d\u0131r. \u00d6zel fonksiyonlar, alias&#8217;lar veya yap\u0131land\u0131rma ayarlar\u0131 tan\u0131mlamak i\u00e7in kullan\u0131labilir. Genellikle kullan\u0131c\u0131n\u0131n ana dizininde bulunur.<\/p>\n<pre><code class=\"language-javascript\">\/\/ ~\/.mongoshrc.js \u00f6rne\u011fi\n    prompt = function() {\n        return db + \"> \";\n    };\n\n    function showMyDbs() {\n        print(\"--- My Databases ---\");\n        show dbs;\n        print(\"--------------------\");\n    }<\/code><\/pre>\n<h3>Shell Yard\u0131mc\u0131 Fonksiyonlar\u0131 ve Ayarlar\u0131<\/h3>\n<p><code>mongosh<\/code>, kullan\u0131c\u0131 deneyimini iyile\u015ftiren bir dizi yard\u0131mc\u0131 fonksiyona ve ayara sahiptir.<\/p>\n<p>*   <strong><code>help()<\/code>:<\/strong> Mevcut veritaban\u0131 veya koleksiyon i\u00e7in kullan\u0131labilecek komutlar\u0131 listeler.<\/p>\n<pre><code class=\"language-javascript\">db.help()\n    db.users.help()<\/code><\/pre>\n<p>*   <strong><code>print()<\/code> \/ <code>printjson()<\/code>:<\/strong> Metin veya JSON \u00e7\u0131kt\u0131s\u0131 almak i\u00e7in kullan\u0131l\u0131r. <code>printjson()<\/code> daha okunabilir JSON \u00e7\u0131kt\u0131s\u0131 sa\u011flar.<\/p>\n<p>*   <strong><code>cls<\/code> \/ <code>clear<\/code>:<\/strong> Terminal ekran\u0131n\u0131 temizler.<\/p>\n<p>*   <strong>Otomatik Tamamlama:<\/strong> Tab tu\u015funa basarak komutlar\u0131, koleksiyon adlar\u0131n\u0131 ve alan adlar\u0131n\u0131 otomatik tamamlayabilirsiniz. Bu, hatalar\u0131 azalt\u0131r ve verimlili\u011fi art\u0131r\u0131r.<\/p>\n<p>*   <strong>Ge\u00e7mi\u015f (History):<\/strong> Yukar\u0131 ve a\u015fa\u011f\u0131 ok tu\u015flar\u0131n\u0131 kullanarak daha \u00f6nce \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131z komutlara eri\u015febilirsiniz.<\/p>\n<h2>Hata Ay\u0131klama ve Performans \u0130pu\u00e7lar\u0131<\/h2>\n<p>MongoDB Shell, sorgular\u0131 optimize etmek ve performans\u0131 anlamak i\u00e7in de ara\u00e7lar sunar.<\/p>\n<p>*   <strong><code>explain()<\/code> Metodu:<\/strong><br \/>\n    Bir sorgunun veya agregasyon pipeline&#8217;\u0131n\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve hangi indeksleri kulland\u0131\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in <code>explain()<\/code> metodunu kullan\u0131n. Bu, performans darbo\u011fazlar\u0131n\u0131 belirlemek i\u00e7in \u00e7ok \u00f6nemlidir.<\/p>\n<pre><code class=\"language-javascript\">db.users.find({ age: { $gte: 30 } }).explain(\"executionStats\")<\/code><\/pre>\n<p>    <code>\"queryPlanner\"<\/code>, <code>\"executionStats\"<\/code> veya <code>\"allPlansExecution\"<\/code> gibi modlar belirtebilirsiniz. <code>executionStats<\/code>, sorgunun ger\u00e7ekte nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131na dair detayl\u0131 istatistikler sunar.<\/p>\n<p>*   <strong><code>getPlanCache().list()<\/code>:<\/strong><br \/>\n    MongoDB, s\u0131k kullan\u0131lan sorgular\u0131n sorgu planlar\u0131n\u0131 \u00f6nbelle\u011fe al\u0131r. Bu komut, \u00f6nbellekteki sorgu planlar\u0131n\u0131 listeler.<\/p>\n<p>*   <strong><code>db.currentOp()<\/code>:<\/strong><br \/>\n    Sunucuda \u015fu anda \u00e7al\u0131\u015fan i\u015flemleri g\u00f6sterir. Uzun s\u00fcren veya kilitlenen sorgular\u0131 tespit etmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>*   <strong>Log Dosyalar\u0131n\u0131 Kontrol Etme:<\/strong><br \/>\n    MongoDB sunucusunun log dosyalar\u0131 (<code>mongod.log<\/code>), hatalar, yava\u015f sorgular ve di\u011fer \u00f6nemli olaylar hakk\u0131nda de\u011ferli bilgiler i\u00e7erir. Shell&#8217;den do\u011frudan eri\u015filemezler ancak performans sorunlar\u0131n\u0131 giderirken kontrol edilmelidirler.<\/p>\n<h2>Sonu\u00e7 ve \u0130leri Okuma<\/h2>\n<p>MongoDB Shell (<code>mongosh<\/code>), MongoDB veritaban\u0131 ile etkile\u015fim kurmak i\u00e7in g\u00fc\u00e7l\u00fc, esnek ve vazge\u00e7ilmez bir ara\u00e7t\u0131r. Bu makalede, shell&#8217;in kurulumundan ba\u015flayarak, temel veritaban\u0131 ve koleksiyon i\u015flemlerini, CRUD operasyonlar\u0131n\u0131, indeks y\u00f6netimini, agregasyon \u00e7er\u00e7evesini, kullan\u0131c\u0131 y\u00f6netimini ve JavaScript entegrasyonunu ele ald\u0131k. Ayr\u0131ca, performans analizi ve hata ay\u0131klama i\u00e7in ipu\u00e7lar\u0131 sunduk.<\/p>\n<p>Shell&#8217;in komut sat\u0131r\u0131 aray\u00fcz\u00fc, hem geli\u015ftiriciler hem de veritaban\u0131 y\u00f6neticileri i\u00e7in h\u0131zl\u0131 testler yapmak, betikler \u00e7al\u0131\u015ft\u0131rmak ve veritaban\u0131n\u0131 y\u00f6netmek i\u00e7in ideal bir ortam sa\u011flar. Otomatik tamamlama, s\u00f6zdizimi vurgulama ve geli\u015fmi\u015f hata mesajlar\u0131 gibi modern \u00f6zellikler sayesinde <code>mongosh<\/code>, veritaban\u0131 etkile\u015fimini daha verimli ve keyifli hale getirir.<\/p>\n<p>MongoDB Shell&#8217;i etkin bir \u015fekilde kullanarak, veritaban\u0131 operasyonlar\u0131n\u0131z\u0131 kolayla\u015ft\u0131rabilir, sorgular\u0131n\u0131z\u0131 optimize edebilir ve MongoDB&#8217;nin sundu\u011fu t\u00fcm potansiyeli ortaya \u00e7\u0131karabilirsiniz. Daha derinlemesine bilgi edinmek ve en g\u00fcncel \u00f6zelliklerden haberdar olmak i\u00e7in MongoDB&#8217;nin resmi dok\u00fcmantasyonunu d\u00fczenli olarak ziyaret etmeniz \u015fiddetle tavsiye edilir. Pratik yaparak ve farkl\u0131 senaryolar\u0131 deneyerek shell becerilerinizi geli\u015ftirebilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"MongoDB Shell&#8217;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye\nMongoDB, modern uygulamalar\u0131n veri depolama ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak \u00fczer","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[676],"tags":[],"class_list":{"0":"post-30440","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-mongodb","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MongoDB Shell&#039;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MongoDB Shell&#039;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye\" \/>\n<meta property=\"og:description\" content=\"MongoDB Shell&#039;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye MongoDB, modern uygulamalar\u0131n veri depolama ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak \u00fczer\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-27T19:41:16+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"MongoDB Shell&#8217;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye\",\"datePublished\":\"2025-09-27T19:41:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/\"},\"wordCount\":2378,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"MongoDB\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/\",\"name\":\"MongoDB Shell'i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-27T19:41:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MongoDB Shell&#8217;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MongoDB Shell'i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/","og_locale":"tr_TR","og_type":"article","og_title":"MongoDB Shell'i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye","og_description":"MongoDB Shell'i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye MongoDB, modern uygulamalar\u0131n veri depolama ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak \u00fczer","og_url":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-27T19:41:16+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"MongoDB Shell&#8217;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye","datePublished":"2025-09-27T19:41:16+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/"},"wordCount":2378,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["MongoDB"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/","url":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/","name":"MongoDB Shell'i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-27T19:41:16+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/mongodb-shelli-kullanmaya-baslangic-temellerden-ileri-seviyeye\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MongoDB Shell&#8217;i Kullanmaya Ba\u015flang\u0131\u00e7: Temellerden \u0130leri Seviyeye"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=30440"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30440\/revisions"}],"predecessor-version":[{"id":30441,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30440\/revisions\/30441"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}