Toán tử $gt (greater than) trong MongoDB cho phép so sánh giá trị của trường lồng nhau (nested field) trong đối tượng (embedded document/hashes) bằng cách sử dụng dot notation.
Tạo dữ liệu mẫu
> db.performQueryDemo.insertOne({"PlayerDetails":{"PlayerScore":1000,"PlayerLevel":2},"PlayerName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7eba41a844af18acdffa9") }
> db.performQueryDemo.insertOne({"PlayerDetails":{"PlayerScore":0,"PlayerLevel":1},"PlayerName":"Robert"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7ebbb1a844af18acdffaa") }
> db.performQueryDemo.insertOne({"PlayerDetails":{"PlayerScore":-10,"PlayerLevel":0},"PlayerName":"Larry"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7ebd41a844af18acdffab") }
> db.performQueryDemo.insertOne({"PlayerDetails":{"PlayerScore":1,"PlayerLevel":1},"PlayerName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7ebe31a844af18acdffac") }
Xem dữ liệu
> db.performQueryDemo.find().pretty();
Tìm player có điểm > 0
> db.performQueryDemo.find({"PlayerDetails.PlayerScore":{$gt:0}});Kết quả
Giải thích
PlayerDetails.PlayerScore: Dot notation truy cập trường lồng nhau$gt: 0: Greater than 0 (lớn hơn 0, không bao gồm 0)- Chris (1000) và David (1) khớp
- Robert (0) và Larry (-10) không khớp
Các toán tử so sánh khác
| Toán tử | Ý nghĩa | Ví dụ |
|---|---|---|
$gt | Lớn hơn (>) | {$gt: 100} |
$gte | Lớn hơn hoặc bằng (≥) | {$gte: 100} |
$lt | Nhỏ hơn (<) | {$lt: 100} |
$lte | Nhỏ hơn hoặc bằng (≤) | {$lte: 100} |
$ne | Khác (!=) | {$ne: 100} |
$in | Trong mảng | {$in: [1,2,3]} |
$nin | Không trong mảng | {$nin: [1,2,3]} |
Kết hợp nhiều điều kiện trên trường lồng nhau
0 HOẶC Level >= 2
db.performQueryDemo.find({
$or: [
{"PlayerDetails.PlayerScore": {$gt: 0}},
{"PlayerDetails.PlayerLevel": {$gte: 2}}
]
});
Trong Aggregation Pipeline
Index trên trường lồng nhau
Lưu ý
- Dot notation hoạt động cho cả find(), update(), aggregation
- Trường lồng nhau có thể là object hoặc array of objects
- So sánh kiểu dữ liệu: MongoDB so sánh theo BSON type order nếu kiểu khác nhau
- Null/missing field:
{$gt: 0}sẽ không khớp null