Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Thực hiện $gt trên trường lồng nhau (hash) trong MongoDB

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ĩaVí dụ
$gtLớn hơn (>){$gt: 100}
$gteLớn hơn hoặc bằng (≥){$gte: 100}
$ltNhỏ hơn (<){$lt: 100}
$lteNhỏ hơn hoặc bằng (≤){$lte: 100}
$neKhác (!=){$ne: 100}
$inTrong mảng{$in: [1,2,3]}
$ninKhô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