NoSQL cơ bản
Cơ bản về MongoDB
MongoDB là một cơ sở dữ liệu NoSQL hướng tài liệu (document-oriented) lưu trữ dữ liệu dưới dạng JSON-like (BSON). Các khái niệm chính bao gồm:
- Database: Cơ sở dữ liệu.
- Collection: Tập hợp các tài liệu (document).
- Document: Một bản ghi dữ liệu dưới dạng JSON.
INSERT - Chèn Dữ liệu
Câu lệnh INSERT được sử dụng để thêm tài liệu mới vào collection.
Cú pháp:
db.collection.insertOne(document);
db.collection.insertMany([document1, document2, ...]);
Ví dụ:
Collection students
:
db.students.insertOne({
student_id: 1,
student_name: "John Doe",
class_id: 101
});
db.students.insertMany([
{ student_id: 2, student_name: "Jane Smith", class_id: 102 },
{ student_id: 3, student_name: "Alice Johnson", class_id: 101 }
]);
Collection classes
:
db.classes.insertOne({
class_id: 101,
class_name: "Mathematics"
});
db.classes.insertMany([
{ class_id: 102, class_name: "Science" },
{ class_id: 103, class_name: "History" }
]);
Collection subjects
:
db.subjects.insertOne({
subject_id: 201,
subject_name: "Algebra",
class_id: 101
});
db.subjects.insertMany([
{ subject_id: 202, subject_name: "Biology", class_id: 102 },
{ subject_id: 203, subject_name: "World History", class_id: 103 }
]);
FIND - Truy vấn Dữ liệu
Câu lệnh FIND được sử dụng để truy vấn dữ liệu từ collection.
Cú pháp:
db.collection.find(query, projection);
Các Toán Tử:
- So sánh:
$eq
,$ne
,$gt
,$gte
,$lt
,$lte
- Logic:
$and
,$or
,$not
,$nor
- Khác:
$in
,$nin
,$exists
,$type
Ví dụ:
Truy vấn cơ bản: Lấy danh sách tất cả học sinh.
db.students.find({});
Truy vấn: Lấy danh sách tất cả học sinh cùng lớp của họ.
db.students.aggregate([
{
$lookup: {
from: "classes",
localField: "class_id",
foreignField: "class_id",
as: "class_info"
}
},
{
$unwind: "$class_info"
},
{
$project: {
student_name: 1,
"class_info.class_name": 1
}
}
]);
Truy vấn: Lấy tên của tất cả các môn học và lớp tương ứng.
db.subjects.aggregate([
{
$lookup: {
from: "classes",
localField: "class_id",
foreignField: "class_id",
as: "class_info"
}
},
{
$unwind: "$class_info"
},
{
$project: {
subject_name: 1,
"class_info.class_name": 1
}
}
]);
Sắp xếp Dữ liệu: Lấy danh sách học sinh sắp xếp theo tên.
db.students.find({}).sort({ student_name: 1 });
Sử dụng Hàm: Đếm số lượng học sinh trong mỗi lớp.
db.students.aggregate([
{
$group: {
_id: "$class_id",
student_count: { $sum: 1 }
}
},
{
$lookup: {
from: "classes",
localField: "_id",
foreignField: "class_id",
as: "class_info"
}
},
{
$unwind: "$class_info"
},
{
$project: {
_id: 0,
class_name: "$class_info.class_name",
student_count: 1
}
}
]);
UPDATE - Cập nhật Dữ liệu
Câu lệnh UPDATE được sử dụng để sửa đổi dữ liệu hiện có trong collection.
Cú pháp:
db.collection.updateOne(filter, update, options);
db.collection.updateMany(filter, update, options);
Ví dụ:
Cập nhật tên của một học sinh:
db.students.updateOne(
{ student_id: 1 },
{ $set: { student_name: "Johnathan Doe" } }
);
Cập nhật tên của một lớp học:
db.classes.updateOne(
{ class_id: 101 },
{ $set: { class_name: "Advanced Mathematics" } }
);
Cập nhật tên của một môn học:
db.subjects.updateOne(
{ subject_id: 201 },
{ $set: { subject_name: "Advanced Algebra" } }
);
DELETE - Xóa Dữ liệu
Câu lệnh DELETE được sử dụng để xóa dữ liệu khỏi collection.
Cú pháp:
db.collection.deleteOne(filter);
db.collection.deleteMany(filter);
Ví dụ:
Xóa một học sinh khỏi collection students
:
db.students.deleteOne({ student_id: 2 });
Xóa một lớp học khỏi collection classes
:
db.classes.deleteOne({ class_id: 102 });
Xóa một môn học khỏi collection subjects
:
db.subjects.deleteOne({ subject_id: 202 });
Kết luận
Tài liệu này cung cấp các câu lệnh cơ bản và các ví dụ chi tiết liên quan đến các collection students
, classes
, và subjects
trong MongoDB. Hãy luyện tập các câu lệnh này để nắm vững kỹ năng chèn, truy vấn, cập nhật và xóa dữ liệu trong MongoDB.