Bảng dưới đây trình bày các thuật ngữ và khái niệm SQL khác nhau, tương tự như thuật ngữ và khái niệm MongoDB.
Trong SQL, chúng ta có thể chỉ định bất kỳ kết hợp cột hoặc cột duy nhất nào làm khóa chính. Trong MongoDB, chúng ta không cần đặt khóa chính. Trường _id được tự động đặt thành khóa chính.
Xem thêm Sử dụng table trong React
Thuật ngữ cần thiết của SQL và MongoDB
SQL Terms | MongoDB Terms |
database | Database |
table | Collection |
row | document hoặc BSON document |
column | field |
index | index |
table joins | $lookup, embedded document |
primary key | primary key |
Trong SQL, chúng ta có thể chỉ định bất kỳ kết hợp cột hoặc cột duy nhất nào làm khóa chính. | Trong MongoDB, chúng ta không cần đặt khóa chính. Trường _id được tự động đặt thành khóa chính. |
aggregation | aggregation pipeline |
SELECT INTO NEW_TABLE | $out |
MERGE INTO TABLE | $merge |
transactions | transactions |
Các ví dụ dưới đây đại diện cho các câu lệnh SQL khác nhau và các câu lệnh MongoDB tương tự.
Các ví dụ trong bảng giả sử các điều kiện sau:
Ví dụ SQL giả sử một tên bảng testDB
Các ví dụ MongoDB giả sử một collections có tên testDB chứa các tài liệu của nguyên mẫu sau:
{
_id: ObjectId (“509a8fb2bd2f983a0”),
user_id: “admin123”,
tuổi 18,
trạng thái: ‘A’
}
Tạo và thay đổi lệnh
Câu lệnh SQL | Câu lệnh MongoDB |
CREATE TABLE testDB( id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(20), age Number, status char(1), PRIMARY KEY (id) ) | db.createCollection ( ” testDB” ) |
ALTER TABLE testDB ADD join_date DATETIME | db.testDB.updateMany( { }, { $set: { join_date: new Date() } } ) |
ALTER TABLE testDB DROP COLUMN join_date | db.testDB.updateMany( { }, { $unset: { “join_date”: “” } } ) |
CREATE INDEX idx_user_id_asc ON testDB( user_id ) | db.people.createIndex ( { user_id: 1 } ) |
CREATE INDEX idx_user_id_asc ON people (user_id) | db.people.createIndex( { user_id: 123, age: 1} ) |
DROP TABLE people | db.people.drop () |
Lệnh Insert trong SQL và MongoDB
SQL Insert statement | MongoDB insert statement |
INSERT INTO testDB(user_id, age, status) VALUES (“mongo”, 45, “A”) | db.testDB.insertOne( { user_id: “mongo”, age: 18, status: “A” } ) |
Lệnh chọn SQL và Mongo DB
SQL SELECT Statement | MongoDB find() Statement |
---|---|
SELECT * FROM testDB |
db.testDB.find() |
SELECT id, user_id, status FROM testDB |
db.testDB.find( { }, { user_id: 1, status: 1 } ) |
SELECT user_id, status FROM testDB |
db.testDB.find( { }, { user_id: 1, status: 1, _id: 0 } ) |
SELECT * FROM testDB WHERE status = "B" |
db.testDB.find( { status: "A" } ) |
SELECT user_id, status FROM testDB WHERE status = "A" |
db.testDB.find( { status: "A" }, { user_id: 1, status: 1, _id: 0 } ) |
SELECT * FROM testDB WHERE status != "A" |
db.testDB.find( { status: { $ne: "A" } } ) |
SELECT * FROM testDB WHERE status = "A" AND age = 50 |
db.testDB.find( { status: "A", age: 50 } ) |
SELECT * FROM testDB WHERE status = "A" OR age = 50 |
db.testDB.find( { $or: [ { status: "A" } , { age: 50 } ] } ) |
SELECT * FROM testDB WHERE age > 25 |
db.testDB.find( { age: { $gt: 25 } } ) |
SELECT * FROM testDB WHERE age < 25 |
Db.testDB.find( { age: { $lt: 25 } } ) |
SELECT * FROM testDB WHERE age > 25 AND age <= 50 |
db.testDB.find( { age: { $gt: 25, $lte: 50 } } ) |
SELECT * FROM testDB WHERE user_id like "%bc%" |
db.testDB.find( { user_id: /bc/ } ) -or- db.testDB.find( { user_id: { $regex: /bc/ } } ) |
SELECT * FROM testDB WHERE user_id like "bc%" |
db.testDB.find( { user_id: /^bc/ } ) -or- db.testDB.find( { user_id: { $regex: /^bc/ } } ) |
SELECT * FROM testDB WHERE status = "A" ORDER BY user_id ASC |
db. testDB. find( { status: "A" } ). sort( { user_id: 1 } ) |
SELECT * FROM testDB WHERE status = "A" ORDER BY user_id ASC |
db. testDB. find( { status: "A" } ). sort( { user_id: 1 } ) |
SELECT * FROM testDB WHERE status = "A" ORDER BY user_id ASC |
db. testDB. find( { status: "A" } ). sort( { user_id: 1 } ) |
SELECT * FROM testDB WHERE status = "A" ORDER BY user_id DESC |
db. testDB. find( { status: "A" } ). sort( { user_id: -1 } ) |
SELECT * FROM testDB WHERE status = "A" ORDER BY user_id DESC |
db. testDB. find( { status: "A" } ). sort( { user_id: -1 } ) |
SELECT COUNT(*) FROM testDB |
db. testDB. count() or db. testDB. find(). count() |
SELECT COUNT(user_id) FROM testDB |
db. testDB.count( { user_id: { $exists: true } } ) or db. testDB.find( { user_id: { $exists: true } } ).count() |
SELECT COUNT(*) FROM testDB WHERE age > 30 |
db. testDB.count( { age: { $gt: 30 } } ) or db. testDB.find( { age: { $gt: 30 } } ).count() |
SELECT DISTINCT(status) FROM testDB |
db. testDB.aggregate( [ { $group : { _id : "$status" } } ] ) or, for distinct value sets that do not exceed the BSON size limit db. testDB.distinct( "status" ) |
SELECT * FROM testDB LIMIT 1 |
db. testDB.findOne() or db. testDB.find(). limit(1) |
SELECT * FROM testDB LIMIT 5 SKIP 10 |
db. testDB.find(). limit(5). skip(10) |
EXPLAIN SELECT * FROM testDB WHERE status = "A" |
db. testDB. find( { status: "A" } ). explain() |
Câu lệnh cập nhật SQL và MongoDB
Câu lệnh cập nhật SQL MongoDB updateMany () Câu lệnh
SQL Update Statements | MongoDB updateMany() Statements |
---|---|
UPDATE testDB SET status = "C" WHERE age > 25 |
db.testDB.updateMany( { age: { $gt: 25 } }, { $set: { status: "C" } } ) |
UPDATE testDB SET age = age + 3 WHERE status = "A" |
db.testDB.updateMany( { status: "A" } , { $inc: { age: 3 } } ) |
Câu lệnh xóa SQL và MongoDB
SQL Delete Statements | MongoDB deleteMany() Statements |
---|---|
DELETE FROM testDB WHERE status = "D" |
db.testDB.deleteMany( { status: "D" } ) |
DELETE FROM testDB |
db.testDB.deleteMany( { } ) |
Các chủ đề khác: