SQL'den NoSQL'e
Tek bir SQL SELECT ifadesi yapıştırın; dönüştürücü onu eşdeğer bir MongoDB find() sorgusuna yeniden yazar. Seçilen sütunları bir projeksiyona, WHERE tümcesini bir filtreye, ORDER BY'ı .sort()'a ve LIMIT'i .limit()'e eşler. Basit ifadeler için bir sorgu yeniden yazıcısıdır, bir taşıma aracı değil: JOIN, GROUP BY, toplamalar ve alt sorgular desteklenmez.
Dönüştürme nasıl çalışır
-
1
SELECT'i ayrıştır
Araç, `SELECT sütunlar FROM tablo [WHERE ...] [ORDER BY ...] [LIMIT n]` biçiminde tek bir ifade okur.
-
2
Her tümceyi eşle
Sütunlar bir projeksiyon `{ col: 1 }` olur, `WHERE` bir filtre olur, `ORDER BY` `.sort()` olur ve `LIMIT` `.limit()` olur.
-
3
Operatörleri çevir
Karşılaştırma operatörleri Mongo operatörlerine eşlenir: `>` `$gt`'ye, `<` `$lt`'ye, `>=` `$gte`'ye, `<=` `$lte`'ye, `!=` `$ne`'ye ve `=` doğrudan bir eşleşmeye.
-
4
Çıktıyı kopyala
Üretilen `db.collection.find(...)` satırı mongosh kabuğuna ya da bir sürücü çağrısına yapıştırmaya hazırdır.
Çözümlü bir örnek
SQL:
SELECT name, price FROM products WHERE price > 100 ORDER BY price DESC LIMIT 5;
MongoDB sorgusu:
db.products.find({ price: { $gt: 100 } }, { name: 1, price: 1 }).sort({ price: -1 }).limit(5)
Dönüştürücünün eşlediği şeyler
| SQL | MongoDB find() |
|---|---|
SELECT a, b |
projeksiyon { a: 1, b: 1 } |
SELECT * |
tüm alanlar (boş projeksiyon) |
FROM users |
db.users.find(...) |
WHERE a = 5 |
{ a: 5 } |
WHERE a > 5 |
{ a: { $gt: 5 } } |
WHERE a >= 5 |
{ a: { $gte: 5 } } |
WHERE a != 5 |
{ a: { $ne: 5 } } |
WHERE a AND b |
{ a: ..., b: ... } |
WHERE a OR b |
{ $or: [ ... ] } |
ORDER BY a DESC |
.sort({ a: -1 }) |
LIMIT 10 |
.limit(10) |
Desteklenmeyenler
- JOIN’ler. Yalnızca tek bir tablo okunur. Koleksiyonları birleştirmek
$lookupya da normalleştirilmemiş bir veri modeli gerektirir; bu bir şema kararıdır, bir sorgu yeniden yazımı değil. - GROUP BY ve toplamalar.
COUNT,SUM,AVGveGROUP BY, bu aracın üretmediği toplama hattını (db.collection.aggregate([...])) gerektirir. - Alt sorgular, CTE’ler ve pencere fonksiyonları. Modeli yeniden düşünün ya da işi aşamalara bölün; bunlar bir
find()içinde ifade edilemez. - IN, LIKE ve BETWEEN.
WHEREayrıştırıcısı yalnızca=,>,<,>=,<=,!=ve<>karşılaştırma operatörlerini işler. - AND ile OR karıştırma. Bir
WHEREtümcesi tümüyleANDya da tümüyleORolarak ele alınır; ikisini aynı ifadede birleştirmeyin. - INSERT, UPDATE, DELETE, CREATE TABLE. Yalnızca
SELECTdönüştürülür.
Çıktı hakkında
Sonuç her zaman tek bir db.collection.find(filtre, projeksiyon) satırıdır ve isteğe bağlı olarak .sort() ve .limit() eklenir. MongoDB kabuğunu ve sürücülerini hedefler. Firestore ya da Elasticsearch sorguları üretmez ve indeks seçmez ya da performansı optimize etmez. Ona güvenmeden önce sorguyu kendi verilerinizle test edin.
Sık Sorulan Sorular
Hayır. Çıktı her zaman mongosh kabuğu ya da bir sürücü için bir MongoDB find() sorgusudur. Diğer belge depoları için bir hedef seçici yoktur.
Hayır. Bunlar, bu aracın üretmediği MongoDB toplama hattını (aggregate([...])) gerektirir. Yalnızca filtre, projeksiyon, sıralama ve limit içeren find() sorguları üretir.
Hayır. Yalnızca tek bir FROM tablosu okunur. NoSQL depoları gömmeyi ya da referans vermeyi yeğler; bu yüzden bir JOIN genellikle bir sorgu yeniden yazımı değil, bir veri modeli değişikliği anlamına gelir.
Hayır. Yalnızca SELECT ifadeleri dönüştürülür. MongoDB koleksiyonları varsayılan olarak şemasızdır; bu nedenle çevrilecek bir tablo tanımı yoktur.
İlgili Araçlar
ASCII Tablosu Referansı
NUL, LF ve DEL dahil her kod için ondalık, onaltılık, sekizlik ve ikili değerlerle HTML sayısal karakter başvurusu gösterimini sunan tam ASCII tablosu.
HTML Karakter Referansı
HTML varlıklarının aranabilir listesi; adlandırılmış ve sayısal kodlarıyla birlikte özel karakter ve semboller için tek tıkla kopyalama.
FPS Sayacı
requestAnimationFrame ile tarayıcı FPS değerini ölçün: yumuşatma, en düşük ve en yüksek kare hızı, uyarı eşiği ve isteğe bağlı grafik. Yerel çalışır, yükleme ve API yoktur.
Klavye kısayolları başvurusu
macOS, Windows ve Linux’ta VS Code, Chrome ve GNU Readline kullanan Bash için belgelenmiş varsayılan kısayolları arayın.
Dosya Boyutu Dönüştürücü
Bayt, KB, MB, GB, TB ve ikili IEC birimleri (KiB, MiB, GiB, TiB) arasında, ondalık ve ikiliyi dilediğiniz gibi birleştirerek dönüşüm yapın.
E-posta Doğrulayıcı
Bir e-posta adresini doğrulayın: RFC 5322 sözdizimi kontrolü, canlı MX kaydı sorgulama, ayrıca yerel kısım, alan adı ve uzunluk bilgileri. Hiçbir e-posta gönderilmez.
Araç diğer dillerde mevcuttur
- SQL till NoSQL [SV]
- SQL から NoSQL へ [JA]
- SQL a NoSQL [ES]
- SQL → NoSQL [KO]
- من SQL إلى NoSQL [AR]
- SQL para NoSQL [PT]
- SQL zu NoSQL [DE]
- SQL vers NoSQL [FR]
- Dari SQL ke NoSQL [ID]
- การแปลง SQL เป็น NoSQL [TH]
- SQL naar NoSQL [NL]
- Từ SQL sang NoSQL [VI]
- SQL na NoSQL [PL]
- SQL в NoSQL [RU]
- 从 SQL 到 NoSQL [ZH]
- SQL to NoSQL [EN]
- SQL a NoSQL [IT]