NoSQL cơ bản

NoSQL cơ bản
Photo by Rubaitul Azad / Unsplash

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.