Tìm hiểu MongoDB
1. Giới thiệu cơ bản về mongoDB### MongoDB là một cơ sở dữ liệu mã nguồn mở được viết bằng C++ và là cơ sở dữ liệu NoSQL hàng đầu. Ngoài ra thì MongoDB còn là là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và khả ...
1. Giới thiệu cơ bản về mongoDB###
MongoDB là một cơ sở dữ liệu mã nguồn mở được viết bằng C++ và là cơ sở dữ liệu NoSQL hàng đầu. Ngoài ra thì MongoDB còn là là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng dễ dàng
2. Database trong MongoDB###
MongoDB Server có thể có nhiều database, mỗi database chứa các collection
3. Collection
Collection là một nhóm các Document trong MongoDB. Collection trong MongoDB tương đương với table sử dụng trong các hệ quản trị cơ sở dữ liệu SQL. Một Collection tồn tại bên trong một cơ sở dữ liệu duy nhất. Các Collection không có ràng buộc Relationship như các hệ quản trị cơ sở dữ liệu khác nên việc truy xuất rất nhanh.
4. Document
Document hay BSON document là một tập hợp chứa các cặp key-value, bên trong một Collection có thể có nhiều trường khác nhau. Document trong mongoDB tương đương với row trong các hệ quản trị cơ sở dữ liệu SQL. Trong một document chứa nhiều field tương đương với column trong các hệ quản trị cơ sở dữ liệu SQL.
Bảng dưới đây cho thấy sự tương đương trong mongoDB và các hệ quản trị cơ sở dữ liệu SQL
5. Create and Alter
Bảng dưới đây trình bày sự tương ứng giữa câu lệnh SQL và mongoDB
5.1. Create table
SQL Schema Statements
CREATE TABLE users ( id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30), age Number, status char(1), PRIMARY KEY (id) )
MongoDB Schema Statements Collection hoàn toàn được tạo khi thực hiện insert() lần đầu tiên. Khóa chính được tự động thêm nếu _id field không được xác định.
db.users.insert( { user_id: "abc123", age: 55, status: "A" } )
Tuy nhiên bạn cũng có thể tạo một collection
db.createCollection("users")
5.2 Alter table
SQL statement
ALTER TABLE users ADD join_date DATETIME
MongoDB
Sử dụng $$et operator để add field đã tồn tại trong document
db.users.update( { }, { $set: { join_date: new Date() } }, { multi: true } )
Sử dụng $$nset operator để xóa field đã tồn tại trong document
db.users.update( { }, { $unset: { join_date: "" } }, { multi: true } )
5.3.Insert
Sự tương tứng giữa SQL và mongoDB khi Insert record
SQL INSERT Statements
INSERT INTO users(user_id, age, status) VALUES ("bcd001", 45, "A")
MongoDB insert() Statements
db.users.insert( { user_id: "bcd001", age: 45, status: "A" } )
5.4. Select
Sự tương tứng giữa SQL và mongoDB khi select
Ví dụ 1
SQL SELECT Statements và MongoDB find() Statements
SELECT * db.users.find() FROM users db.users.find()
Ví dụ 2
--SQL statement SELECT id, user_id, status FROM users --MongoDB find () statement db.users.find( { }, { user_id: 1, status: 1 } )
Ví dụ 3
--SQL SELECT Statements SELECT user_id, status FROM users --MongoDB find() Statements db.users.find( { }, { user_id: 1, status: 1, _id: 0 } )
Ví dụ 4
--SQL SELECT Statements SELECT * FROM users WHERE status = "A" --MongoDB find() Statements db.users.find( { status: "A" } )
Ví dụ 5
--SQL SELECT Statements SELECT user_id, status FROM users WHERE status = "A" --MongoDB find() Statements db.users.find( { status: "A" }, { user_id: 1, status: 1, _id: 0 } )
Ví dụ 6
--SQL SELECT Statements SELECT * FROM users WHERE status != "A" --MongoDB find() Statements db.users.find( { status: { $ne: "A" } } )
Ví dụ 7
--SQL SELECT Statements SELECT * FROM users WHERE status = "A" AND age = 50 --MongoDB find() Statements db.users.find( { status: "A", age: 50 } )
Ví dụ 8
--SQL SELECT Statements SELECT * FROM users WHERE status = "A" OR age = 50 --MongoDB find() Statements db.users.find( { $or: [ { status: "A" } , { age: 50 } ] } )
Ví dụ 9
--SQL SELECT Statements SELECT * FROM users WHERE age > 25 --MongoDB find() Statements db.users.find( { age: { $gt: 25 } } )
Ví dụ 10
--SQL SELECT Statements SELECT * FROM users WHERE age < 25 --MongoDB find() Statements db.users.find( { age: { $lt: 25 } } )
Ví dụ 11
--SQL SELECT Statements SELECT * FROM users WHERE age > 25 AND age <= 50 --MongoDB find() Statements db.users.find( { age: { $gt: 25, $lte: 50 } } )
Ví dụ 12
--SQL SELECT Statements SELECT * FROM users WHERE user_id like "%bc%" --MongoDB find() Statements db.users.find( { user_id: /bc/ } )
Ví dụ 13
--SQL SELECT Statements SELECT * FROM users WHERE user_id like "bc%" ----MongoDB find() Statements db.users.find( { user_id: /^bc/ } )
Ví dụ 14
--SQL SELECT Statements SELECT * FROM users WHERE status = "A" ORDER BY user_id ASC ----MongoDB find() Statements db.users.find( { status: "A" } ).sort( { user_id: 1 } )
Ví dụ 15
--SQL SELECT Statements SELECT * FROM users WHERE status = "A" ORDER BY user_id DESC ----MongoDB find() Statements db.users.find( { status: "A" } ).sort( { user_id: -1 } )
Ví dụ 16
--SQL SELECT Statements SELECT COUNT(*) FROM users ----MongoDB find() Statements db.users.count() or db.users.find().count()
Ví dụ 17
--SQL SELECT Statements SELECT COUNT(user_id) FROM users ----MongoDB find() Statements db.users.count( { user_id: { $exists: true } } ) or db.users.find( { user_id: { $exists: true } } ).count()
Ví dụ 18
--SQL SELECT Statements SELECT COUNT(*) FROM users WHERE age > 30 ----MongoDB find() Statements db.users.count( { age: { $gt: 30 } } ) or db.users.find( { age: { $gt: 30 } } ).count()
Ví dụ 19
--SQL SELECT Statements SELECT DISTINCT(status) FROM users ----MongoDB find() Statements db.users.distinct( "status" )
Ví dụ 20
--SQL SELECT Statements SELECT * FROM users LIMIT 1 ----MongoDB find() Statements db.users.findOne() or db.users.find().limit(1)
Ví dụ 21
--SQL SELECT Statements SELECT * FROM users LIMIT 5 SKIP 10 ----MongoDB find() Statements db.users.find().limit(5).skip(10)
Ví dụ 22
--SQL SELECT Statements EXPLAIN SELECT * FROM users WHERE status = "A" ----MongoDB find() Statements db.users.find( { status: "A" } ).explain()
5.5.Update Records
Câu lệnh sau đây tương ứng giữa SQL và mongoDB
Ví dụ 1
--SQL Update Statements UPDATE users SET status = "C" WHERE age > 25 ----MongoDB update() Statements db.users.update( { age: { $gt: 25 } }, { $set: { status: "C" } }, { multi: true } )
Ví dụ 2
--SQL Update Statements UPDATE users SET age = age + 3 WHERE status = "A" ----MongoDB update() Statements db.users.update( { status: "A" } , { $inc: { age: 3 } }, { multi: true } )
5.6 Delete record
Câu lệnh sau đây tương ứng giữa SQL và mongoDB
Ví dụ 1
--SQL Delete Statements DELETE FROM users WHERE status = "D" ----MongoDB remove() Statements db.users.remove( { status: "D" } ) DELETE FROM users db.users.remove({})
Ví dụ 2
--SQL Delete Statements DELETE FROM users ----MongoDB remove() Statements db.users.remove({})
Nguồn tham khảo http://www.tutorialspoint.com/mongodb/
https://docs.mongodb.com/manual/reference/sql-comparison/