+9

MongoDB Cheat Sheets - So sánh cú pháp giữa SQL và MongoDB

Nhân tiện vừa nhận được thông tin phong phanh phía khách hàng sắp tới dự án của mình sẽ có một vài thay đổi lớn về công nghệ, một trong số đó có MongoDB thế là làm luôn 1 bảng cheat sheets so sánh cú pháp giữa mongodb và SQL cho tiện tra cứu, tiện thể share luôn cho mọi người.

Executables

Bảng dưới đây trình bày các tệp thi hành của MySQL/Oracle và các tệp thực thi MongoDB tương ứng.

MySQL/Oracle MongoDB
Database Server mysqld/oracle mongod
Database Client mysql/sqlplus mongo

Các thuật ngữ và khái niệm

Bảng dưới đây trình bày các thuật ngữ và khái niệm thông dụng của SQL và MongoDB tương ứng.

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.

Specify any unique column or column combination as primary key.
primary key.

In MongoDB, the primary key is automatically set to the _id field.
aggregation (e.g. group by) aggregation framework.

Các ví dụ

Bảng dưới đây trình bày các câu truy vấn thông dụng của SQL và MongoDB. Các ví dụ trong bảng được quy ước các điều kiện như sau:

  • Các ví dụ của SQL được thực thi trên bảng users.
  • Các ví dụ của MongoDB truy vấn trên một collection có tên là users, chứa các documents có dạng như sau:
{
  _id: ObjectID("509a8fb2f3f4948bd2f983a0"),
  user_id: "abc123",
  age: 55,
  status: 'A'
}

1. Create and Alter

SQL Schema Statements MongoDB Schema Statements Reference
CREATE TABLE users (id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30), age Number, status char(1), PRIMARY KEY (id)) db.users.insert({user_id: "abc123", age: 55, status: "A"})
Tuy nhiên vẫn có thể sử dụng cú pháp sau để tạo một collection:
db.createCollection("users")

Khoá chính _id được tự động thêm vào nếu trường _id (ở đây là user_id không được chỉ định)
See insert() and createCollection() for more information.
ALTER TABLE users ADD join_date DATETIME Collections không mô tả hoặc không thực thi thay đổi cấu trúc của documents.
Xem Schema Design để biết thêm chi tiết.
See update() and $set for more information on changing the structure of documents in a collection.
ALTER TABLE users DROP COLUMN join_date Collections không mô tả hoặc không thực thi thay đổi cấu trúc của documents.
Xem Schema Design để biết thêm chi tiết.
See update() and $set for more information on changing the structure of documents in a collection.
CREATE INDEX idx_user_id_asc ON users(user_id) db.users.ensureIndex({user_id: 1}) See ensureIndex() and indexes for more information.
CREATE INDEX idx_user_id_asc_age_desc ON users(user_id, age DESC) db.users.ensureIndex({user_id: 1, age: -1}) See ensureIndex() and indexes for more information.
DROP TABLE users db.users.drop() See drop() for more information.

2. Insert

SQL INSERT Statements MongoDB insert() Statements Reference
INSERT INTO users(user_id, age, status) VALUES ("bcd001", 45, "A") db.users.insert({user_id: "bcd001", age: 45, status: "A"}) See insert() for more information.

3. Select

SQL SELECT Statements MongoDB find() Statements Reference
SELECT * FROM users db.users.find() See find() for more information.
SELECT id, user_id, status FROM users db.users.find({},{user_id: 1, status: 1}) See find() for more information.
SELECT user_id, status FROM users db.users.find({},{user_id: 1, status: 1, _id: 0}) See find() for more information.
SELECT * FROM users WHERE status = "A" db.users.find({ status: "A"}) See find() for more information.
SELECT user_id, status FROM users WHERE status = "A" db.users.find({ status: "A"},{user_id: 1, status: 1, _id: 0}) See find() for more information.
SELECT * FROM users WHERE status != "A" db.users.find({ status:{$ne: "A"}}) See find() and $ne for more information.
SELECT * FROM users WHERE status = "A" AND age = 50 db.users.find({ status: "A", age: 50}) See find() and $and for more information.
SELECT * FROM users WHERE status = "A" OR age = 50 db.users.find({ $or: [{status: "A"} ,{age: 50} ]}) See find() and $or for more information.
SELECT * FROM users WHERE age > 25 db.users.find({age:{$gt: 25}}) See find() and $gt for more information.
SELECT * FROM users WHERE age < 25 db.users.find({age:{$lt: 25}}) See find() and $lt for more information.
SELECT * FROM users WHERE age > 25 AND age <= 50 db.users.find({age:{$gt: 25, $lte: 50}}) See find(), gt](https://docs.mongodb.com/manual/reference/operator/query/gt/index.html)and[gt](https://docs.mongodb.com/manual/reference/operator/query/gt/index.html) and [ and $lte for more information.
SELECT * FROM users WHERE user_id like "%bc%" db.users.find({user_id: /bc/}) See find() and $regex for more information.
SELECT * FROM users WHERE user_id like "bc%" db.users.find({ user_id: /^bc/}) See find() and $regex for more information.
SELECT * FROM users WHERE status = "A" ORDER BY user_id ASC db.users.find({status: "A"}).sort({user_id: 1}) See find() and sort for more information.
SELECT * FROM users WHERE status = "A" ORDER BY user_id DESC db.users.find({status: "A"}).sort({user_id: -1}) See find() and sort for more information.
SELECT COUNT(*) FROM users db.users.count()
ordb.users.find().count()
See find() and $count for more information.
SELECT COUNT(user_id) FROM users db.users.count({user_id:{$exists: true}})
ordb.users.find({user_id:{$exists: true}}).count()
See find(), count](https://docs.mongodb.com/manual/reference/operator/aggregation/count/index.html)and[count](https://docs.mongodb.com/manual/reference/operator/aggregation/count/index.html) and [ and $exists for more information.
SELECT COUNT(*) FROM users WHERE age > 30 db.users.count({age:{$gt: 30}})
or db.users.find({age:{$gt: 30}}).count()
See find(), count](https://docs.mongodb.com/manual/reference/operator/aggregation/count/index.html)and[count](https://docs.mongodb.com/manual/reference/operator/aggregation/count/index.html) and [ and $gt for more information.
SELECT DISTINCT(status) FROM users db.users.distinct("status") See find() and distinct for more information.
SELECT * FROM users LIMIT 1 db.users.findOne()
or db.users.find().limit(1)
See find(), findOne(), and limit() for more information.
SELECT * FROM users LIMIT 5 SKIP 10 db.users.find().limit(5).skip(10) See find(), limit() and skip() for more information.
EXPLAIN SELECT * FROM users WHERE status = "A" db.users.find({status: "A"}).explain() See find() and explain() for more information.

4. Update records

SQL Update Statements MongoDB update() Statements Reference
UPDATE users SET status = "C" WHERE age > 25 db.users.update({age:{$gt: 25}},{$set:{status: "C"}},{multi: true}) See update(), gt](https://docs.mongodb.com/manual/reference/operator/query/gt/index.html),and[gt](https://docs.mongodb.com/manual/reference/operator/query/gt/index.html), and [, and $set for more information.
UPDATE users SET age = age + 3 WHERE status = "A" db.users.update({status: "A"} ,{$inc:{age: 3}},{multi: true}) See update(), inc](https://docs.mongodb.com/manual/reference/operator/update/inc/index.html),and[inc](https://docs.mongodb.com/manual/reference/operator/update/inc/index.html), and [, and $set for more information.

5. Delete records

SQL Delete Statements MongoDB remove() Statements Reference
DELETE FROM users WHERE status = "D" db.users.remove({status: "D"}) See remove() for more information.
DELETE FROM users db.users.remove() See remove() for more information.

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí