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

Áp dụng $dateToString trên phần tử mảng trong MongoDB

Để format ngày tháng trong mảng object, dùng $map kết hợp $dateToString trong stage $project của aggregate.

Dữ liệu mẫu

> db.demo104.insertOne({
    "AppName" : "Online Book", 
    "Details" : [ 
        { "ClientName" : "Chris", "Deadline" : new ISODate("2020-03-10") } 
    ] 
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2ed7fd9fd5fd66da21446f") }

Pipeline aggregate

> db.demo104.aggregate([
    { "$match": {} },
    { "$project": { 
        "title": 1, 
        "Details": { 
            "$map": { 
                "input": "$Details", 
                "as": "out", 
                "in": { 
                    "ClientName": "$$out.ClientName", 
                    "Deadline": { 
                        "$dateToString": { "format": "%m", "date": "$$out.Deadline" } 
                    } 
                } 
            } 
        } 
    }}
]);

Kết quả

{ "_id" : ObjectId("5e2ed7fd9fd5fd66da21446f"), "Details" : [ { "ClientName" : "Chris", "Deadline" : "03" } ] }

Giải thích:

  • $map: Biến đổi từng phần tử của mảng Details
  • $$out: Biến tham chiếu phần tử hiện tại trong $map
  • $dateToString: Format date theo format (định dạng strftime): %Y-%m-%d, %H:%M:%S, %m (tháng), %d (ngày)...
  • Kết quả: Chỉ giữ tháng "03" từ 2020-03-10

Các format phổ biến: %Y-%m-%d (2020-03-10), %Y-%m-%dT%H:%M:%S.%LZ (ISO string), %d/%m/%Y (10/03/2020).