MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Menautkan &Membuat Gabungan MongoDB Menggunakan SQL:Bagian 1

SQL adalah cara yang paling disukai untuk melibatkan database relasional sejauh menyangkut kueri. Dapat dipahami bahwa pengguna akan bekerja dengan database relasional seperti MySQL dan PostgreSQL yang menggunakan fitur kueri SQL. Secara umum, SQL mudah dimengerti dan oleh karena itu menjadi banyak digunakan terutama dalam database relasional.

Namun, SQL cukup kompleks ketika mencoba melibatkan sekumpulan dokumen yang luas dalam database. Singkatnya, ini tidak dimaksudkan untuk database dokumen karena dilengkapi dengan sejumlah kemunduran. Misalnya, Anda tidak dapat melakukan kueri dokumen larik yang disematkan dengan mudah atau Anda perlu mendesain subprogram untuk mengulangi dan memfilter data yang dikembalikan untuk memberikan hasil yang diperlukan. Akibatnya, ini akan menghasilkan peningkatan durasi eksekusi. Tetapi memiliki pemahaman yang baik dalam SQL akan memberikan dasar yang lebih baik dalam berinteraksi dengan MongoDB dari beberapa titik daripada memulai dari awal.

Di blog ini, kami akan menggunakan program Studio 3T untuk menampilkan berbagai kueri gabungan SQL dan bagaimana Anda dapat mendesain ulang mereka menjadi kueri MongoDB untuk mencapai kinerja yang lebih baik. Program ini dapat diunduh dari tautan ini.

Menghubungkan SQL ke MongoDB

Ada beberapa driver atau lebih tepatnya antarmuka di mana Anda dapat menggunakan SQL untuk berkomunikasi dengan MongoDB, misalnya, ODBC. ODBC adalah singkatan dari Open Database Connectivity. Ini hanyalah sebuah antarmuka yang memungkinkan aplikasi untuk mengakses data dalam sistem manajemen basis data menggunakan SQL sebagai proses standar untuk mengakses data tersebut. Muncul dengan keunggulan interoperabilitas tambahan di mana satu aplikasi dapat mengakses beberapa sistem manajemen basis data.

Di blog ini, kami akan memproduksi dan menguji kode dari SQL dan kemudian mengoptimalkannya melalui editor agregasi untuk menghasilkan kueri MongoDB.

Memetakan Bagan untuk SQL ke MongoDB

Sebelum kita masuk ke banyak detail, kita perlu memahami hubungan dasar antara 2 database ini terutama kata kunci dalam konsep query.

Terminologi dan Konsep

SQL MongoDB
Tabel
Baris
Kolom
Tabel bergabung
Koleksi
Dokumen BSON
Bidang
$lookup

Kunci utama dalam SQL mendefinisikan kolom unik yang pada dasarnya mengatur baris dalam urutan waktu rekaman. Di sisi lain, kunci utama di MongoDB adalah bidang unik untuk menyimpan dokumen dan memastikan bahwa bidang yang diindeks tidak menyimpan nilai duplikat.

Beberapa Sembilan Menjadi DBA MongoDB - Membawa MongoDB ke ProduksiPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan MongoDBUnduh secara Gratis

Korelasi Antara SQL dan MongoDB

Katakanlah kita memiliki data siswa dan kita ingin merekam data ini di database SQL dan MongoDB. Kita dapat mendefinisikan objek siswa sederhana sebagai:

{
    name: ‘James Washington’,
    age: 15,
    grade: A,
    Score: 10.5
}

Dalam membuat tabel SQL, kita perlu menentukan nama kolom dan tipe data sedangkan di MongoDB koleksi akan dibuat secara otomatis selama penyisipan pertama.

Tabel di bawah ini akan membantu kita memahami bagaimana beberapa pernyataan SQL dapat ditulis di MongoDB.

Pernyataan skema SQL Pernyataan Skema MongoDB
CREATE TABLE students (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  name Varchar (30),
  age Number,
  score Float
)

Untuk menyisipkan dokumen ke database

INSERT INTO students(Name, age, grade,score) VALUES(“James Washington”, 15, “A”, 10.5)

Kita dapat mendefinisikan desain skema menggunakan beberapa modul seperti luwak dan mendefinisikan bidang seperti objek daripada memasukkan dokumen secara langsung untuk menunjukkan korelasinya. Id utama yang diajukan akan dibuat secara otomatis selama penyisipan dokumen.

{
  name: String,
  age Number,
  score: Number
}

Memasukkan dokumen baru untuk membuat koleksi

db.students.insertOne({
    name: ‘James Washington’,
    age: 15,
    grade: ‘A’,
    score: 10.5
})

Menggunakan pernyataan ADD untuk menambahkan kolom baru ke tabel yang ada.

ALTER TABLE students ADD units 10

Struktur dokumen koleksi tidak didefinisikan dengan baik dan oleh karena itu perbarui dokumen di tingkat dokumen menggunakan updateMany()

db.students.updateMany({}, {$set: {units: 10}})

Untuk menjatuhkan kolom (satuan)

ALTER TABLE students DROP COLUMN units

Untuk menjatuhkan bidang (satuan)

db.students.updateMany({}, {$unset: {units: “”}})

Untuk menjatuhkan siswa meja

DROP TABLE students

Untuk menjatuhkan koleksi siswa

db.students.drop()
pernyataan SQL Select MongoDB menemukan Pernyataan

Pilih semua baris

SELECT * FROM students

Pilih semua dokumen

db.students.find()

Untuk mengembalikan kolom tertentu saja.

SELECT name, grade FROM students

Untuk mengembalikan bidang tertentu saja. Secara default, bidang _id dikembalikan kecuali ditentukan lain dalam proses proyeksi.

db.students.find({}, {name: 1, grade: 1, _id: 0})

Menyetel _id:0 berarti hanya dokumen yang dikembalikan yang akan memiliki nama dan nilai objek kelas saja.

Untuk memilih baris tertentu dengan beberapa nilai kolom yang cocok.

SELECT * FROM students WHERE grade = “A”

Untuk memilih dokumen tertentu dengan beberapa nilai bidang yang cocok.

db.students.find({grade: “A”})

Memilih baris dengan kolom yang nilainya memiliki beberapa karakter sebagai nilai kriteria yang diberikan

SELECT * FROM students WHERE name like  “James%”

Memilih dokumen dengan bidang yang nilainya memiliki beberapa karakter sebagai nilai kriteria yang diberikan

db.students.find({grade: {$regex: /^James/}})

Untuk mengembalikan baris dalam urutan menaik menggunakan kunci utama.

SELECT * FROM students ORDER BY id ASC

Untuk mengembalikan dokumen secara menaik menggunakan kunci utama

db.students.find().sort({$natural: 1})

Untuk mengelompokkan baris yang dikembalikan sesuai dengan beberapa kolom (kelas)

SELECT DISTINCT (grade) FROM students

Untuk mengelompokkan dokumen yang dikembalikan sesuai dengan beberapa bidang (nilai)

db.students.aggregate([
{$group: : {_id: “$grade”}}
]

Membatasi jumlah baris yang dikembalikan dan melewatkan beberapa

SELECT * FROM students LIMIT 1 SKIP 4

Membatasi jumlah dokumen yang dikembalikan dan melewatkan baris

db.students.find.limit(1).skip(4)

Opsi penting adalah untuk mengetahui bagaimana kueri kami dieksekusi, maka gunakan metode jelaskan.

EXPLAIN SELECT *  FROM students WHERE grade “A”
db.students.find({grade: “A”}).explain()
Pernyataan Pembaruan SQL Pernyataan pembaruan MongoDB

Perbarui kolom nilai untuk siswa yang berusia sama dengan 15 tahun atau lebih

UPDATE students SET grade  = “B” WHERE age >= 15

Disini kita menggunakan beberapa operator seperti $gt, $lt dan $lte.

db.students.updateMany({age: {$gte: 15}}, {$set: {status: “B”}})

Menaikkan beberapa nilai kolom

UPDATE students SET age  = age + 1 WHERE age < 15
db.students.updateMany({
age: {$lt:15}},{$inc: {age: 1}})
pernyataan penghapusan SQL MongoDB menghapus Pernyataan

Untuk menghapus semua baris

DELETE FROM students

Untuk menghapus semua dokumen.

db.students.remove({})

Untuk menghapus baris tertentu di mana beberapa kolom memiliki nilai tertentu.

DELETE FROM students WHERE age = 15
db.students.remove({age: 15})

Tabel pemetaan sampel ini akan memungkinkan Anda untuk mendapatkan pemahaman yang lebih baik tentang apa yang akan kita pelajari di topik berikutnya.

SQL dan Studio 3T

Studio 3T adalah salah satu program yang tersedia yang membantu menghubungkan SQL dan MongoDB. Ini memiliki fitur SQL Query untuk meningkatkan seseorang untuk memanipulasi SQL. Kueri diinterpretasikan ke dalam shell Mongo untuk menghasilkan kode kueri sederhana dalam bahasa MongoDB yang setara. Selain melakukan query sederhana, aplikasi Studio 3T kini dapat melakukan join.

Untuk contoh data kami di atas, setelah menghubungkan database Anda di Studio 3T, kami dapat menggunakan jendela SQL untuk menemukan dokumen yang sesuai dengan kriteria kami yaitu:

SELECT * FROM students  WHERE name LIKE  'James%';

Jika Anda memiliki dokumen dengan bidang nama yang disetel ke nilai James, maka itu akan dikembalikan. Demikian juga, jika Anda mengklik tab kode kueri, Anda akan disajikan jendela dengan kode MongoDB yang setara. Untuk pernyataan di atas, kita akan memiliki:

db.getCollection("students").find(
    { 
        "name" : /^James.*$/i
    }
);

Ringkasan

Terkadang Anda mungkin menginginkan cara cepat untuk berinteraksi dengan MongoDB dari pengetahuan yang Anda miliki tentang SQL. Kami telah mempelajari beberapa kesamaan kode dasar antara SQL dan padanannya di MongoDB. Selanjutnya, beberapa program seperti Studio 3T memiliki alat yang sudah mapan untuk mengubah kueri SQL menjadi bahasa yang setara dengan MongoDB dan menyempurnakan kueri ini untuk hasil yang lebih baik. Bagi sebagian besar dari kita, ini akan menjadi alat yang hebat untuk mempermudah pekerjaan kita dan memastikan kode apa pun yang kita miliki pada akhirnya sangat optimal untuk kinerja database kita. Di Bagian 2 blog ini, kita akan belajar tentang SQL INNER JOIN di MongoDB.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menautkan &Membuat Gabungan MongoDB Menggunakan SQL:Bagian 2

  2. Tidak dapat menemukan modul '../build/Release/bson'] kode:'MODULE_NOT_FOUND' } js-bson:Gagal memuat ekstensi c++ bson, menggunakan versi JS murni

  3. Kembalikan hanya elemen sub-dokumen yang cocok dalam array bersarang

  4. Shell dan server MongoDB tidak cocok

  5. $unwind array kosong