Bu rehberde, MongoDB ve SQL kullanarak ülkeler veritabanında çeşitli sorgulama tekniklerini keşfedeceksiniz. Her iki veritabanı yönetim sisteminde de aynı veri kümesi üzerinde nasıl temel ve gelişmiş sorgular yapabileceğinizi öğrenerek, verilerinizi etkin bir şekilde filtrelemeyi, sıralamayı ve manipüle etmeyi öğreneceksiniz. Basit sorgulardan regex kullanarak yapılan gelişmiş aramalara kadar birçok örnekle, SQL ve MongoDB arasında geçiş yapmanın temellerini kavrayacaksınız.
MongoDB'nin find komutu yalnızca tek bir koleksiyondan (tablo) veri aramanıza izin verir. Ancak, farklı koleksiyonlardan veri birleştirmek için MongoDB'nin aggregation framework'ünü kullanabilirsiniz. Aggregation framework'ü, farklı koleksiyonlardan veri getirerek birleştirmenizi sağlayan güçlü bir araçtır.
db.countries.find({})
SELECT * FROM countries;
MongoDB'de db.countries.find({}) komutu, countries koleksiyonundaki tüm belgeleri getirir. SQL'de SELECT * FROM countries; ise countries tablosundaki tüm satırları getirir.
db.countries.find({ name: "Germany" })
SELECT * FROM countries WHERE name = 'Germany';
db.countries.find({ name: "Germany" }) MongoDB sorgusu, name alanı "Germany" olan ülkeleri filtreler. SQL'de SELECT * FROM countries WHERE name = 'Germany'; ise name alanı "Germany" olan satırları getirir.
db.countries.find({ region: "Europe", subregion: "Western Europe" })
SELECT * FROM countries WHERE region = 'Europe' AND subregion = 'Western Europe';
MongoDB'de db.countries.find({ region: "Europe", subregion: "Western Europe" }) sorgusu, regioni "Europe" ve subregioni "Western Europe" olan ülkeleri filtreler. SQL'de SELECT * FROM countries WHERE region = 'Europe' AND subregion = 'Western Europe'; ise regioni "Europe" ve subregioni "Western Europe" olan satırları getirir.
db.countries.find({ id: { $gt: 50 } })
SELECT * FROM countries WHERE id > 50;
db.countries.find({ id: { $gt: 50 } }) MongoDB sorgusu, id alanı 50'den büyük olan ülkeleri getirir. SQL'de SELECT * FROM countries WHERE id > 50; ise id alanı 50'den büyük olan satırları getirir.
db.countries.find({ $or: [ { iso2: "DE" }, { iso3: "DEU" } ] })
SELECT * FROM countries WHERE iso2 = 'DE' OR iso3 = 'DEU';
db.countries.find({ $or: [ { iso2: "DE" }, { iso3: "DEU" } ] }) MongoDB sorgusu, iso2 alanı "DE" veya iso3 alanı "DEU" olan ülkeleri getirir. SQL'de SELECT * FROM countries WHERE iso2 = 'DE' OR iso3 = 'DEU'; ise iso2 alanı "DE" veya iso3 alanı "DEU" olan satırları getirir.
db.countries.find({ name: { $regex: /^G/ } })
SELECT * FROM countries WHERE name LIKE 'G%';
db.countries.find({ name: { $regex: /^G/ } }) MongoDB sorgusu, name alanı "G" ile başlayan ülkeleri getirir. SQL'de LIKE operatörüyle benzer sonuçlar elde edilebilir.
db.countries.find({}, { name: 1, capital: 1, currency: 1, _id: 0 })
SELECT name, capital, currency FROM countries;
db.countries.find({}, { name: 1, capital: 1, currency: 1, _id: 0 }) MongoDB sorgusu, name, capital ve currency alanlarını seçer ve _id alanını hariç tutar. SQL'de SELECT name, capital, currency FROM countries; ise name, capital ve currency alanlarını getirir.
db.countries.find({}).sort({ name: 1 }).limit(5)
SELECT TOP 5 * FROM countries ORDER BY name ASC;
db.countries.find({}).sort({ name: 1 }).limit(5) MongoDB sorgusu, ülkeleri isme göre artan sırayla sıralar ve ilk 5 ülkeyi getirir. SQL'de SELECT TOP 5 * FROM countries ORDER BY name ASC; ise ülkeleri isme göre artan sırayla sıralar ve ilk 5 satırı getirir.
db.countries.find({ name: { $regex: /^A/ } })
SELECT * FROM countries WHERE name LIKE 'A%';
db.countries.find({ name: { $regex: /^A/ } }) MongoDB sorgusu, ismi "A" ile başlayan ülkeleri getirir. SQL'de LIKE 'A%' kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({ name: { $regex: /n/ } })
SELECT * FROM countries WHERE name LIKE '%n%';
db.countries.find({ name: { $regex: /n/ } }) MongoDB sorgusu, isminde "n" harfi geçen ülkeleri getirir. SQL'de LIKE '%n%' kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({ name: { $regex: /y$/ } })
SELECT * FROM countries WHERE name LIKE '%y';
db.countries.find({ name: { $regex: /y$/ } }) MongoDB sorgusu, ismi "y" ile biten ülkeleri getirir. SQL'de LIKE '%y' kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({ name: { $regex: /^a.*land$/ } })
SELECT * FROM countries WHERE name LIKE 'a%land';
db.countries.find({ name: { $regex: /^a.*land$/ } }) MongoDB sorgusu, ismi "a" ile başlayıp "land" ile biten ülkeleri getirir. SQL'de LIKE 'a%land' kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({ name: { $regex: /^.{5}$/ } })
SELECT * FROM countries WHERE LEN(name) = 5;
db.countries.find({ name: { $regex: /^.{5}$/ } }) MongoDB sorgusu, ismi tam olarak 5 harften oluşan ülkeleri getirir. SQL'de LEN() fonksiyonu kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({ name: { $regex: /re/ } })
SELECT * FROM countries WHERE name LIKE '%re%';
db.countries.find({ name: { $regex: /re/ } }) MongoDB sorgusu, isminde "re" geçen ülkeleri getirir. SQL'de LIKE '%re%' kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({ name: { $regex: /ia$/ } })
SELECT * FROM countries WHERE name LIKE '%ia';
db.countries.find({ name: { $regex: /ia$/ } }) MongoDB sorgusu, ismi "ia" ile biten ülkeleri getirir. SQL'de LIKE '%ia' kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({ name: { $regex: /an/ } })
SELECT * FROM countries WHERE name LIKE '%an%';
db.countries.find({ name: { $regex: /an/ } }) MongoDB sorgusu, isminde "an" geçen ülkeleri büyük/küçük harf duyarlı olarak getirir. SQL'de LIKE '%an%' kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({ name: { $regex: /na/i } })
SELECT * FROM countries WHERE name LIKE '%na%';
db.countries.find({ name: { $regex: /na/i } }) MongoDB sorgusu, isminde "na" geçen ülkeleri büyük/küçük harf duyarlı olmayan şekilde getirir. SQL'de LIKE '%na%' kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({ name: { $regex: /^\S+$/ } })
SELECT * FROM countries WHERE name NOT LIKE '% %';
db.countries.find({ name: { $regex: /^\S+$/ } }) MongoDB sorgusu, ismi sadece bir kelime olan ülkeleri getirir (boşluk içermeyenler). SQL'de NOT LIKE '% %' veya benzer ifadeler kullanılarak benzer sonuçlar elde edilebilir.
db.countries.find({}).sort({ name: 1 })
SELECT * FROM countries ORDER BY name ASC;
Bu SQL sorgusu, ülkeleri adlarına göre artan sırada sıralar. MongoDB'de aynı işlem, find ve sort kullanılarak name alanında artan sırada belgeleri sıralayarak yapılır.
db.countries.find({}).sort({ population: -1 })
SELECT * FROM countries ORDER BY population DESC;
Bu SQL sorgusu, ülkeleri nüfuslarına göre azalan sırada sıralar. MongoDB'de bu işlem, find ve sort kullanılarak population alanında azalan sırada belgeleri sıralayarak yapılır.
db.countries.find({}).sort({ region: 1, subregion: 1 })
SELECT * FROM countries ORDER BY region ASC, subregion ASC;
Bu SQL sorgusu, ülkeleri önce bölgeye, ardından alt bölgeye göre artan sırada sıralar. MongoDB'de aynı işlem, find ve sort kullanılarak region ve subregion alanlarında artan sırada belgeleri sıralayarak yapılır.
db.countries.find({ $and: [{ region: "Europe" }, { subregion: "Western Europe" }] })
SELECT * FROM countries WHERE region = 'Europe' AND subregion = 'Western Europe';
Bu SQL sorgusu, hem Avrupa bölgesinde hem de Batı Avrupa alt bölgesinde bulunan ülkeleri seçer. MongoDB'de bu işlem, find ve $and operatörü kullanılarak region ve subregion alanlarının her ikisinin de eşleştiği belgeleri arayarak yapılır.
db.countries.find({ $or: [{ region: "Europe" }, { subregion: "Western Europe" }] })
SELECT * FROM countries WHERE region = 'Europe' OR subregion = 'Western Europe';
Bu SQL sorgusu, ya Avrupa bölgesinde ya da Batı Avrupa alt bölgesinde bulunan ülkeleri seçer. MongoDB'de bu işlem, find ve $or operatörü kullanılarak region veya subregion alanlarının herhangi birinin eşleştiği belgeleri arayarak yapılır.
db.countries.find({ region: { $ne: "Europe" } })
SELECT * FROM countries WHERE region <> 'Europe';
Bu SQL sorgusu, Avrupa bölgesinde olmayan tüm ülkeleri seçer. MongoDB'de bu işlem, find ve $ne operatörü kullanılarak region alanı Avrupa olmayan belgeleri arayarak yapılır.
db.countries.find({ $and: [{ region: "Europe" },
{
$or: [{ subregion: "Western Europe"
},
{
subregion: "Northern Europe"
}
] }] })
-------------------------------------------------------------
SELECT * FROM countries WHERE region = 'Europe' AND
(subregion = 'Western Europe' OR subregion = 'Northern Europe');
Bu SQL sorgusu, Avrupa bölgesinde olup Batı Avrupa veya Kuzey Avrupa alt bölgelerinde bulunan ülkeleri seçer. MongoDB'de bu işlem, find, $and ve $or operatörleri kullanılarak bu alanların eşleştiği belgeleri arayarak yapılır.
db.countries.find({ region: "Europe", subregion:
{
$in: ["Western Europe", "Northern Europe"] }
})
---------------------------------------------------------------
SELECT * FROM countries WHERE region = 'Europe' AND
subregion IN ('Western Europe', 'Northern Europe');
Bu SQL sorgusu, Avrupa bölgesinde olup Batı Avrupa veya Kuzey Avrupa alt bölgelerinde bulunan ülkeleri seçer. MongoDB'de bu işlem, find ve $in operatörü kullanılarak subregion alanında belirtilen değerlerden biri eşleşen belgeleri arayarak yapılır.