MongoDB - Truy vấn Tài liệu

Xin chào các pháp sư cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ khám phá thế giới thú vị của MongoDB và học cách truy vấn tài liệu. Là giáo viên máy tính hàng xóm thân thiện của bạn, tôi ở đây để hướng dẫn bạn trong hành trình này, từng bước một. Nào, mang theo mũ bảo hiểm ảo của bạn, và chúng ta cùng bắt đầu khám phá!

MongoDB - Query Document

Phương thức find()

Phương thức find() giống như một cuộc săn kho báu trong MongoDB. Nó giúp chúng ta tìm kiếm tài liệu trong một bộ sưu tập. Hãy tưởng tượng bạn có một bộ sưu tập叫做 "students" trong cơ sở dữ liệu trường học của bạn. Hãy xem chúng ta có thể sử dụng find() như thế nào để lấy thông tin.

db.students.find()

Dòng mã đơn giản này sẽ trả về tất cả các tài liệu trong bộ sưu tập "students". Nó giống như hỏi, "Hãy cho tôi xem tất cả học sinh!"

Nhưng nếu chúng ta muốn cụ thể hơn? Giả sử chúng ta muốn tìm tất cả học sinh tên là "John":

db.students.find({name: "John"})

Truy vấn này sẽ trả về tất cả các tài liệu trong đó trường name là "John". Nó giống như chúng ta hỏi, "Bạn có thể cho tôi xem tất cả các John trong lớp không?"

Phương thức pretty()

Bây giờ, hãy làm cho kết quả của chúng ta trông đẹp và ngăn nắp hơn với phương thức pretty() phương thức. Nó giống như cho dữ liệu của chúng ta một cuộc làm đẹp sang trọng!

db.students.find().pretty()

Điều này sẽ hiển thị kết quả theo cách đã định dạng, giúp chúng ta dễ dàng đọc hơn. Nó giống như dọn dẹp phòng bừa bộn bề của bạn - đột nhiên mọi thứ trông tốt hơn nhiều!

Phương thức findOne()

Đôi khi, chúng ta chỉ muốn tìm một tài liệu. Đó là lúc phương thức findOne() phát huy tác dụng. Nó giống như chọn quả táo đầu tiên từ cây.

db.students.findOne({name: "Sarah"})

Điều này sẽ trả về tài liệu đầu tiên nó tìm thấy trong đó tên là "Sarah". Nếu có nhiều Sarah, nó sẽ chỉ hiển thịSarah đầu tiên mà nó gặp.

Các điều khoản WHERE tương đương trong MongoDB

Bây giờ, hãy so sánh các truy vấn MongoDB với các điều khoản WHERE của SQL. Nó giống như dịch giữa hai ngôn ngữ!

Điều khoản WHERE SQL Tương đương MongoDB
WHERE name = "John" {name: "John"}
WHERE age > 25 {age: { $gt: 25 }}
WHERE age >= 25 {age: { $gte: 25 }}
WHERE age < 25 {age: { $lt: 25 }}
WHERE age <= 25 {age: { $lte: 25 }}
WHERE age != 25 {age: { $ne: 25 }}

AND trong MongoDB

Trong MongoDB, chúng ta có thể kết hợp các điều kiện bằng logic AND. Nó giống như nói, "Tôi muốn cái này và cái kia."

db.students.find({name: "John", age: 20})

Truy vấn này sẽ tìm tất cả các tài liệu trong đó tên là "John" AND tuổi là 20.

OR trong MongoDB

Đôi khi, chúng ta muốn tìm các tài liệu phù hợp với một điều kiện hoặc điều kiện khác. MongoDB cũng hỗ trợ điều này!

db.students.find({$or: [{name: "John"}, {age: 20}]})

Truy vấn này sẽ tìm tất cả các tài liệu trong đó tên là "John" OR tuổi là 20.

Sử dụng AND và OR cùng nhau

Chúng ta thậm chí có thể kết hợp các điều kiện AND và OR. Nó giống như tạo một bản đồ kho báu phức tạp!

db.students.find({
grade: "A",
$or: [{name: "John"}, {age: 20}]
})

Truy vấn này sẽ tìm tất cả các tài liệu trong đó điểm là "A" AND (tên là "John" OR tuổi là 20).

NOR trong MongoDB

NOR giống như nói "không cái này và không cái kia". Nó là ngược lại với OR.

db.students.find({
$nor: [{name: "John"}, {age: 20}]
})

Truy vấn này sẽ tìm tất cả các tài liệu trong đó tên không phải là "John" AND tuổi không phải là 20.

NOT trong MongoDB

Cuối cùng, chúng ta có оператор NOT, nó giống như nói "bất kỳ điều gì khác này".

db.students.find({
name: { $not: { $eq: "John" }}
})

Truy vấn này sẽ tìm tất cả các tài liệu trong đó tên không phải là "John".

Và thế là xong, các học sinh yêu quý của tôi! Chúng ta đã cùng nhau hành trình qua thế giới các truy vấn MongoDB, từ các tìm kiếm đơn giản đến các thao tác logic phức tạp. Nhớ rằng, thực hành làm nên hoàn hảo, vì vậy đừng ngần ngại thử nghiệm với các truy vấn này. Ai biết được? Bạn có thể tìm thấy những kho báu ẩn giấu trong dữ liệu của bạn!

Trước khi chúng ta kết thúc, hãy có một bài kiểm tra nhanh. Bạn có thể viết một truy vấn để tìm tất cả các học sinh hoặc 18 tuổi hoặc tên là "Emma" và có điểm "B"? Hãy thử và đừng quên sử dụng phương thức pretty() để làm cho kết quả của bạn trông lung linh!

Chúc các bạn thành công, những nhà quản lý cơ sở dữ liệu tương lai!

Credits: Image by storyset