03. Mapping giữa SQL và MongoDB
Ở bài 1 mình đã có so sánh giữa SQL với mongoDB nhưng chỉ trên hình thức name định dạng ở đây chúng ta sẽ đi vào ánh xạ giữa các câu lệnh của SQL với mongoDB.
SQL Terms/Concepts | MongoDB Terms/Concepts |
---|---|
database | database |
table | collection |
row | document or BSON document |
column | field |
index | index |
table joins | embedded documents and linking |
primary key (Khóa Chính) |
primary key trong mongodb thì khóa chính được khởi tạo tự động là _id |
Ví dụ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/* 1 */ { "_id" : ObjectId("55066ac44a4cc8bef89e4bf8"), "user_id" : "sa" "age" : "25", "status" : "A" } /* 2 */ { "_id" : ObjectId("5508f95fc24b4409793668d9"), "user_id" : "as" "age" : "29", "status" : "B" } |
1. Create and Alter
SQL Schema Statements | MongoDB Schema Statements |
---|---|
CREATE TABLE users (id MEDIUMINT NOT NULL AUTO_INCREMENT,user_id Varchar(30), age Number, status char(1),PRIMARY KEY (id)
) |
tự động tạo tables khi dùng hàm inseart. ở đây _id primary key sẽ tự động khởi tạo nếu nó ko xác định giá trị db.users.insert( { hoặc có thể dùng hàm createCollection |
ALTER TABLE users ADD join_date DATETIME |
Collections không thay đổi cấu trúc document của nó. tức là không thay đổi được Collections Tuy nhiên, tại Docuemnt, update() có thể thêm các document hiện có bằng cách dùng $set |
ALTER TABLE users DROP COLUMN join_date |
Tương tự, update() có thể xóa giá trị = hàm $unset. db.users.update( { }, { $unset: { join_date: “” } }, { multi: true } ) |
CREATE INDEX idx_user_id_asc ON users(user_id) |
db.users.createIndex( { user_id: 1 } ) |
CREATE INDEX idx_user_id_asc_age_desc ON users(user_id, age DESC) |
db.users.createIndex( { user_id: 1, age: -1 } ) |
DROP TABLE users | db.users.drop() |
2. Insert
SQL INSERT Statements | MongoDB insert() Statements |
---|---|
INSERT INTO users(user_id, age, status) VALUES (“bcd001″, 45, “A”) |
db.users.insert( { user_id: “bcd001″, age: 45, status: “A” } ) |
3. Select
SQL SELECT Statements | MongoDB find() Statements |
---|---|
SELECT * FROM users |
db.users.find() |
SELECT id, user_id, status FROM users |
db.users.find( { }, { user_id: 1, status: 1 } ) |
SELECT user_id, status FROM users |
db.users.find( { }, { user_id: 1, status: 1, _id: 0 } ) |
SELECT * FROM users WHERE status = “A” |
db.users.find( { status: “A” } ) |
SELECT user_id, status FROM users WHERE status = “A” |
db.users.find( { status: “A” }, { user_id: 1, status: 1, _id: 0 } ) |
SELECT * FROM users WHERE status != “A” |
db.users.find( { status: { $ne: “A” } } ) |
SELECT * FROM users WHERE status = “A” AND age = 50 |
db.users.find( { status: “A”, age: 50 } ) |
SELECT * FROM users WHERE status = “A” OR age = 50 |
db.users.find( { $or: [ { status: “A” } , { age: 50 } ] } ) |
SELECT * FROM users WHERE age > 25 |
db.users.find( { age: { $gt: 25 } } ) |
SELECT * FROM users WHERE age < 25 |
db.users.find( { age: { $lt: 25 } } ) |
SELECT * FROM users WHERE age > 25 AND age <= 50 |
db.users.find( { age: { $gt: 25, $lte: 50 } } ) |
SELECT * FROM users WHERE user_id like “%bc%” |
db.users.find( { user_id: /bc/ } ) |
SELECT * FROM users WHERE user_id like “bc%” |
db.users.find( { user_id: /^bc/ } ) |
SELECT * FROM users WHERE status = “A” ORDER BY user_id ASC |
db.users.find( { status: “A” } ).sort( { user_id: 1 } ) |
SELECT * FROM users WHERE status = “A” ORDER BY user_id DESC |
db.users.find( { status: “A” } ).sort( { user_id: -1 } ) |
SELECT COUNT(*) FROM users |
db.users.count()or db.users.find().count() |
SELECT COUNT(user_id) FROM users |
db.users.count( { user_id: { $exists: true } } )or db.users.find( { user_id: { $exists: true } } ).count() |
SELECT COUNT(*) FROM users WHERE age > 30 |
db.users.count( { age: { $gt: 30 } } )or db.users.find( { age: { $gt: 30 } } ).count() |
SELECT DISTINCT(status) FROM users |
db.users.distinct( “status” ) |
SELECT * FROM users LIMIT 1 |
db.users.findOne()or db.users.find().limit(1) |
SELECT * FROM users LIMIT 5 SKIP 10 |
db.users.find().limit(5).skip(10) |
EXPLAIN SELECT * FROM users WHERE status = “A” |
db.users.find( { status: “A” } ).explain() |
4. Update
SQL Update Statements | MongoDB update() Statements |
---|---|
UPDATE users SET status = “C” WHERE age > 25 | db.users.update( { age: { $gt: 25 } }, { $set: { status: “C” } }, { multi: true } ) |
UPDATE users SET age = age + 3 WHERE status = “A” | db.users.update( { status: “A” } , { $inc: { age: 3 } }, { multi: true } ) |
5. Delete
SQL Delete Statements | MongoDB remove() Statements |
---|---|
DELETE FROM users WHERE status = “D” | db.users.remove( { status: “D” } ) |
DELETE FROM users | db.users.remove({}) |
https://www.dtmi.net/mapping-giua-sql-va-mongodb/MongoDBDatabase,Mapping SQL to MongoDB,MongoDB
Ở bài 1 mình đã có so sánh giữa SQL với mongoDB nhưng chỉ trên hình thức name định dạng ở đây chúng ta sẽ đi vào ánh xạ giữa các câu lệnh của SQL với mongoDB.
SQL Terms/Concepts
MongoDB Terms/Concepts
database
database
table
collection
row
document or BSON document
column
field
index
index
table joins
embedded documents and linking
primary key (Khóa...
thành
võ tuấn[email protected]AdministratorCà phê Cà pháo, Trảm gió v.vTutorials Blog