0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Hướng Dẫn Chi Tiết về Các Toán Tử Truy Vấn trong MongoDB Phần 1: Toán Tử So Sánh và Logic

Đăng vào 3 tuần trước

• 4 phút đọc

Chủ đề:

MongoDB

Khi làm việc với MongoDB, việc truy vấn và phân tích dữ liệu hiệu quả là điều rất cần thiết để tối ưu hóa ứng dụng của bạn. Bài viết này sẽ giúp bạn nắm vững các toán tử truy vấn, bao gồm các toán tử so sánh và toán tử logic, từ đó cải thiện khả năng tìm kiếm, lọc và phân loại dữ liệu.

I. Toán Tử So Sánh

1. $eq (bằng)

Toán tử $eq được sử dụng để tìm các document mà giá trị của trường bằng một giá trị cụ thể.

Cú pháp:

Copy
{ "field": { "$eq": value } }

Ví dụ:

Copy
db.collection.find({ "age": { "$eq": 25 } })

Truy vấn này tìm document mà trường age bằng 25.

2. $ne (không bằng)

Toán tử $ne tìm kiếm các document mà giá trị của trường không bằng một giá trị cụ thể.

Cú pháp:

Copy
{ "field": { "$ne": value } }

Ví dụ:

Copy
db.collection.find({ "status": { "$ne": "inactive" } })

Truy vấn này tìm document mà trường status không phải là "inactive".

3. $gt (lớn hơn)

Toán tử $gt được dùng để tìm các document mà giá trị của trường lớn hơn một giá trị cụ thể khác.

Cú pháp:

Copy
{ "field": { "$gt": value } }

Ví dụ:

Copy
db.collection.find({ "score": { "$gt": 80 } })

Truy vấn này tìm document mà trường score lớn hơn 80.

4. $lt (nhỏ hơn)

Toán tử $lt được dùng để tìm các document mà giá trị của trường nhỏ hơn một giá trị cụ thể.

Cú pháp:

Copy
{ "field": { "$lt": value } }

Ví dụ:

Copy
db.collection.find({ "score": { "$lt": 50 } })

Truy vấn này tìm các document mà trường score nhỏ hơn 50.

5. $gte (lớn hơn hoặc bằng)

Toán tử $gte được dùng để tìm các document mà giá trị của trường lớn hơn hoặc bằng một giá trị cụ thể.

Cú pháp:

Copy
{ "field": { "$gte": value } }

Ví dụ:

Copy
db.collection.find({ "score": { "$gte": 50 } })

Truy vấn này tìm các document mà trường score lớn hơn hoặc bằng 50.

6. $lte (nhỏ hơn hoặc bằng)

Toán tử $lte tìm các document có giá trị của trường nhỏ hơn hoặc bằng một giá trị cụ thể.

Cú pháp:

Copy
{ "field": { "$lte": value } }

Ví dụ:

Copy
db.collection.find({ "age": { "$lte": 30 } })

Truy vấn này tìm các document mà trường age nhỏ hơn hoặc bằng 30.

7. $in (ở trong)

Toán tử $in tìm các document mà giá trị nằm trong một mảng.

Cú pháp:

Copy
{ "field": { "$in": [value1, value2, ...] } }

Ví dụ:

Copy
db.collection.find({ "category": { "$in": ["books", "electronics"] } })

Truy vấn này tìm các document có trường category là "books" hoặc "electronics".

8. $nin (không ở trong)

Toán tử $nin tìm các document mà giá trị không nằm trong một mảng cụ thể.

Cú pháp:

Copy
{ "field": { "$nin": [value1, value2, ...] } }

Ví dụ:

Copy
db.collection.find({ "status": { "$nin": ["inactive", "suspended"] } })

Truy vấn này tìm các document mà trường status không phải là "inactive" hoặc "suspended".

Tổng kết về Toán Tử So Sánh:

  • $eq: So sánh bằng
  • $ne: So sánh không bằng
  • $gt: Lớn hơn
  • $lt: Nhỏ hơn
  • $gte: Lớn hơn hoặc bằng
  • $lte: Nhỏ hơn hoặc bằng
  • $in: Giá trị nằm trong mảng
  • $nin: Giá trị không nằm trong mảng

II. Toán Tử Logic

1. $and

Toán tử $and được sử dụng để tìm các document mà tất cả các điều kiện trong mảng đều được thoả mãn.

Cú pháp:

Copy
{ "$and": [ { "field1": value1 }, { "field2": value2 } ] }

Ví dụ:

Copy
db.collection.find({ "$and": [ { "status": "active" }, { "age": { "$gte": 18 } } ] })

Truy vấn này tìm các document có trường status là "active" và trường age lớn hơn hoặc bằng 18.

2. $or

Toán tử $or được dùng để tìm các document mà ít nhất một điều kiện trong mảng được thoả mãn.

Cú pháp:

Copy
{ "$or": [ { "field1": value1 }, { "field2": value2 } ] }

Ví dụ:

Copy
db.collection.find({ "$or": [ { "status": "active" }, { "age": { "$lt": 18 } } ] })

Truy vấn này tìm các document mà trường status là "active" hoặc trường age nhỏ hơn 18.

3. $not

Toán tử $not được dùng để tìm các document mà điều kiện không được thoả mãn. Điều này bao gồm các tài liệu không chứa trường đó.

Cú pháp:

Copy
{ "field": { "$not": { "$condition": value } } }

Ví dụ:

Copy
db.collection.find({ "age": { "$not": { "$gte": 18 } } })

Truy vấn này tìm các document mà trường age không bằng 18, hiểu đơn giản là sẽ tìm hết tất cả các trường tuổi trừ trường có tuổi bằng 18.

4. $nor

Toán tử $nor tìm các document mà không có điều kiện nào được thoả mãn trong mảng được yêu cầu.

Cú pháp:

Copy
{ "$nor": [ { "field1": value1 }, { "field2": value2 } ] }

Ví dụ:

Copy
db.collection.find({ "$nor": [ { "status": "inactive" }, { "age": { "$gte": 18 } } ] })

Truy vấn này tìm các document mà trường status không phải "inactive" và trường age không lớn hơn hoặc bằng 18.

Tổng kết về Toán Tử Logic:

  • $and: Tất cả các điều kiện trong mảng đều được thoả mãn.
  • $or: Ít nhất một điều kiện trong mảng được thoả mãn.
  • $not: Điều kiện không được thoả mãn.
  • $nor: Không có điều kiện nào trong mảng được thoả mãn.

Để tìm hiểu thêm về các toán tử trong MongoDB, bạn có thể truy cập trang chính của MongoDB để có thông tin chi tiết hơn.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào