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

Định dạng ngày trong MongoDB shell với $dateToString

Format ngày tháng trong MongoDB Aggregation với $dateToString

Toán tử $dateToString chuyển đổi Date/ISODate thành string theo format tùy chỉnh trong aggregation pipeline.

1. Dữ liệu mẫu

> db.demo480.insertOne({ id: 1, "DueDate": new ISODate("2020-01-10") });
> db.demo480.insertOne({ id: 1, "DueDate": new ISODate("2017-12-21") });
> db.demo480.insertOne({ id: 1, "DueDate": new ISODate("2019-10-12") });
> db.demo480.insertOne({ id: 1, "DueDate": new ISODate("2019-12-01") });

2. Pipeline: Lọc id=1, sort giảm dần, format ngày

> db.demo480.aggregate([
    { "$match": { "id": 1 } },
    { "$sort": { "DueDate": -1 } },
    {
        "$project": {
            "_id": 0,
            "DueDate": {
                "$dateToString": {
                    "format": "%Y-%m-%d %H-%M",
                    "date": "$DueDate"
                }
            }
        }
    }
]);

3. Kết quả

{ "DueDate": "2020-01-10 00-00" }
{ "DueDate": "2019-12-01 00-00" }
{ "DueDate": "2019-10-12 00-00" }
{ "DueDate": "2017-12-21 00-00" }

Bảng format specifiers

SpecifierÝ nghĩaVí dụ
%YNăm 4 chữ số2024
%mTháng 01-1203
%dNgày 01-3115
%HGiờ 00-23 (24h)14
%MPhút 00-5930
%SGiây 00-5945
%LMili-giây 000-999123
%jNgày trong năm 001-366074
%wThứ 0-6 (CN=0)5
%UTuần trong năm 00-5310
%%Ký tự %%

Format phổ biến

// ISO 8601 date
{ $dateToString: { format: "%Y-%m-%d", date: "$DueDate" } }
// "2024-03-15"

// ISO 8601 datetime
{ $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$DueDate" } }
// "2024-03-15T14:30:45.123Z"

// Việt Nam: dd/mm/yyyy
{ $dateToString: { format: "%d/%m/%Y", date: "$DueDate" } }
// "15/03/2024"

// Có timezone (MongoDB 3.6+)
{ $dateToString: { format: "%Y-%m-%d %H:%M", date: "$DueDate", timezone: "+07:00" } }
// "2024-03-15 21:30" (nếu UTC là 14:30)

Lưu ý

  • $dateToString chỉ dùng trong aggregation pipeline
  • Trong find() projection → không dùng được (dùng application format)
  • Timezone mặc định là UTC. Chỉ định timezone để chuyển múi giờ