1. Query Filter

Ví dụ muốn tìm row có column Country là Brazil , nhập filter
{ Country: "Brazil" }


Nhấn nút Reset để bỏ câu lệnh query filter 




2. Chi tiết Where


$eq : bằng value được chỉ định.
$gt : lớn hơn value được chỉ định.
$gte : lớn hơn hoặc bằng value được chỉ định.
$in : nằm trong mảng value 
$lt : nhỏ hơn value được chỉ định.
$lte : nhỏ hơn hoặc bằng value được chỉ định.
$ne So khớp tất cả giá trị ko bằng với value được chỉ định.
$nin So khớp tất cả giá trị ko bằng với value được chỉ định trong một mảng.
$exists : Có tồn tại hay ko

Nếu muốn tìm

+ OrderId bằng 995 - ($eq)
{OrderId : 995} {OrderId : {$eq : 995 }}

+ OrderId Lớn hơn 995 - ($gt)
{OrderId : {$gt : 995 }}

   + start_date lớn hơn ngày  2017-05-01 - $gt "start_date": {$gt: new Date('2017-05-01')}  "LastUpdatedDate" :{$gte : new Date().getTime() - (1000*86400)}

+ OrderId lớn hơn hoặc bằng 995 - ($gte)
OrderId : {$gte : 995 }

+ OrderId nằm trong mảng 995, 1708 - ($in)
OrderId : {$in : [995,1708] }

+ Vouchers không null - $ne
Vouchers : {$ne:null}

+ OrderCode string có chứa HCM (giống like %% SQL) - ($regex) - * Phân biệt chữ thường chữ hoa
OrderCode:{$regex:"HCM"}

+ OrderCode string có ký tự đầu là HCM (giống like ___% SQL) - ($regex)
OrderCode:{$regex:"^HCM"}

+ OrderCode string có ký tự đầu là HCM (giống like %___ SQL) - ($regex)
OrderCode:{$regex:"HCM$"}

+ Có column Vouchers ko và Voucher có khác null
Vouchers : {$exists : true, $ne : null},
    + Lấy giá trị trong mảng Array :      "Vouchers.Apply.ServiceCode" : 322
 + Kiểm tra phần tử thứ 2 của Array có tồn tại không :
"Vouchers.Apply.1" : {$exists : false}

String to Datetime
UpdateDateStr:{ 
    $dateFromString: {
      dateString: "2017-02-08T12:10:40.787"
    } 
}
{ $dateFromString: {
     dateString: "2017-02-08T12:10:40.787",
     timezone: "America/New_York"
} }

{ $dateFromString: {
     dateString: "2017-02-08"
} }

{ $dateFromString: {
     dateString: "06-15-2018",
     format: "%m-%d-%Y"
} }

{ $dateFromString: {
     dateString: "15-06-2018",
     format: "%d-%m-%Y"
} }



3. or và and
{ $and:[ { $or: [ {OrderId : {$gt: 1000}}, {OrderId : {$gte: 100}}, {OrderId : {$in : [995,991,992]}} ], OrderCode:{$regex:"HCM"}, OrderCode:{$regex:"^HCM"}, OrderCode:{$regex:"CC$"}, } ] }



4. Chi tiết Sort
    1 : tăng dần
  - 1 : giảm dần

Ví dụ :
    {"OrderId"1}

5. Group

_id : group theo column nào
$sum : Tính tổng sum của column nào $sum: '$ObjId' , muốn tính count : $sum:1
$max : Lấy giá trị lớn nhất của column
$min : Lấy giá trị nhỏ nhất của column
$first: Lấy đầu tiên của column

Group 1 column
 _id: '$ObjId'

Group nhiều column
_id: { "ObjId": "$ObjId", "ObjContract": "$ObjContract", },

Vi dụ:
{
  _id: '$ObjId',
  n_sum: {
    $sum:1
  },
  n_max:{$max:'$OrderId'},
  n_min:{$min:'$OrderId'},
  first_OrderCode: { $first: "$OrderCode" },
}


6. Unwind - bóc tách 1 mảng ra thành nhiều row

$unwind: {
  path: '$Vouchers'
 }

Ví dụ : 
   Row gốc
    {"OrderId" : 995,"Vouchers" : [1,2]}

   Tách ra thành 2 row 
    {"OrderId" : 995,"Vouchers" : 1}
    {"OrderId" : 995,"Vouchers" : 2}

7. project - lấy những column nào

$project: {
  OrderId: 1,
  Vou_Apply_SerCode: '$Vouchers.Apply.ServiceCode'
 }


8. ReplaceRoot - Khá giống project {$replaceRoot: { newRoot: { LastUpdatedDate : {$toDate : {$toLong : "$LastUpdatedDate"}} ,
OrderId : "$OrderId",
    OrderCode:{ $toUpper: "$OrderCode" },
    OrderCode_lo:{ $toLower: "$OrderCode" },
    LastUpdatedDate : {$toDate : {$toLong : "$LastUpdatedDate"}} ,
}

LastUpdatedDate : {$toDate : {$toLong : "$LastUpdatedDate"}}
LastUpdatedDate : {"$add": [ new Date(0), {$toLong : "$LastUpdatedDate"} ]}
"date" : ISODate("2017-02-08T05:00:00Z")

9. Lookup - giống như left join SQL

$lookup: {
  from: 'saleplatform_order_detail',
  localField: 'OrderId',
  foreignField: 'OrderId',
  as: 'OrderId'
 }

10. Limit
{$limit: 2}

11. $skip
 { $skip: 50 }



12. Chuyển đổi dữ liệu
$toLong : Chuyển đổi số => kiểu số long
$toUpper : Chuyển đổi string => string chữ hoa
$toLower : Chuyển đổi string => string chữ thường
$toDate : Chuyển đổi dữ liệu từ kiểu số => datetime

OrderCode:{ $toUpper: "$OrderCode" },
OrderCode_lo:{ $toLower: "$OrderCode" },
LastUpdatedDate : {$toDate : {$toLong : "$LastUpdatedDate"}} ,

13. Toán tử
$subtract :


$subtract: [ "$start""$end" ]





5. Maximum Time - thời tran truy vấn tối đa
    Default MAX TIME MS value is 60000, or 60 seconds.
    Nếu quá thời gian , sẽ show ra kết quả chạy tới thời điểm đó
   

6. Collation - Quy tắc ngôn ngữ
       Ví dụ chữ hoa, ...

        "locale" : "simple" }

7. Skip - Limit
    Xem từ row nào , mỗi lần xem bao nhiêu row

    Ví dụ : 
       Để xem từ row 436, mỗi lần xem, 50 row

MongoDB
db.article.aggregate(
  { $limit : 50 },
  { $skip : 435 }
);

SQL
SELECT * FROM article
LIMIT 50 OFFSET 435;



8. Explain Plan - View Query Performance


9. Saved Queries
Xem lịch sử các query truy vấn


Đánh dấu sao vào câu query ưa thích, chuyển nó qua FAVORITES

Qua mục FAVORITES, thấy câu query đó và save

Save thành công