Dari SQL ke NoSQL

Tempelkan satu pernyataan SQL SELECT dan konverter menulis ulangnya menjadi kueri find() MongoDB yang setara. Ia memetakan kolom yang dipilih menjadi proyeksi, klausa WHERE menjadi filter, ORDER BY menjadi .sort(), dan LIMIT menjadi .limit(). Ini adalah penulis ulang kueri untuk pernyataan sederhana, bukan alat migrasi: JOIN, GROUP BY, agregasi, dan subkueri tidak didukung.

Cara kerja konversi

  1. 1

    Menganalisis SELECT

    Alat ini membaca satu pernyataan dalam bentuk `SELECT kolom FROM tabel [WHERE ...] [ORDER BY ...] [LIMIT n]`.

  2. 2

    Memetakan setiap klausa

    Kolom menjadi proyeksi `{ col: 1 }`, `WHERE` menjadi filter, `ORDER BY` menjadi `.sort()`, dan `LIMIT` menjadi `.limit()`.

  3. 3

    Menerjemahkan operator

    Operator perbandingan dipetakan ke operator Mongo: `>` ke `$gt`, `<` ke `$lt`, `>=` ke `$gte`, `<=` ke `$lte`, `!=` ke `$ne`, dan `=` ke pencocokan langsung.

  4. 4

    Salin hasilnya

    Baris `db.collection.find(...)` yang dihasilkan siap ditempelkan ke shell mongosh atau pemanggilan driver.

Contoh terperinci

SQL:

SELECT name, price FROM products WHERE price > 100 ORDER BY price DESC LIMIT 5;

Kueri MongoDB:

db.products.find({ price: { $gt: 100 } }, { name: 1, price: 1 }).sort({ price: -1 }).limit(5)

Apa yang dipetakan konverter

SQL MongoDB find()
SELECT a, b proyeksi { a: 1, b: 1 }
SELECT * semua bidang (proyeksi kosong)
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)

Apa yang tidak didukung

  • JOIN. Hanya satu tabel yang dibaca. Menggabungkan koleksi memerlukan $lookup atau model data yang didenormalisasi, yang merupakan keputusan skema, bukan penulisan ulang kueri.
  • GROUP BY dan agregasi. COUNT, SUM, AVG, dan GROUP BY memerlukan pipeline agregasi (db.collection.aggregate([...])), yang tidak dihasilkan alat ini.
  • Subkueri, CTE, dan fungsi jendela. Pikirkan kembali modelnya atau bagi pekerjaan menjadi beberapa tahap; keduanya tidak dapat dinyatakan dalam find().
  • IN, LIKE, dan BETWEEN. Pengurai WHERE hanya menangani operator perbandingan =, >, <, >=, <=, !=, dan <>.
  • Mencampur AND dan OR. Klausa WHERE diperlakukan sepenuhnya sebagai AND atau sepenuhnya OR; jangan gabungkan keduanya dalam satu pernyataan.
  • INSERT, UPDATE, DELETE, CREATE TABLE. Hanya SELECT yang dikonversi.

Tentang keluaran

Hasilnya selalu satu baris db.collection.find(filter, proyeksi), yang secara opsional diikuti .sort() dan .limit(). Ia ditujukan untuk shell dan driver MongoDB. Ia tidak menghasilkan kueri Firestore atau Elasticsearch, dan tidak memilih indeks atau mengoptimalkan kinerja. Uji kueri dengan data Anda sendiri sebelum mengandalkannya.

Pertanyaan yang Sering Diajukan

Tidak. Keluarannya selalu berupa kueri find() MongoDB untuk shell mongosh atau driver. Tidak ada pemilih target untuk penyimpanan dokumen lain.

Tidak. Hal itu memerlukan pipeline agregasi MongoDB (aggregate([...])) yang tidak dihasilkan alat ini. Alat ini hanya menghasilkan kueri find() dengan filter, proyeksi, pengurutan, dan batas.

Tidak. Hanya satu tabel FROM yang dibaca. Penyimpanan NoSQL lebih menyukai penyematan atau referensi, sehingga JOIN biasanya berarti perubahan model data, bukan penulisan ulang kueri.

Tidak. Hanya pernyataan SELECT yang dikonversi. Koleksi di MongoDB tidak berskema secara bawaan, sehingga tidak ada definisi tabel yang perlu diterjemahkan.

Alat Terkait

Alat ini tersedia dalam bahasa lain