Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

แปลง String เป็น Date ใน MongoDB ด้วย $dateFromString

ใช้ Aggregation Pipeline กับ Operator $dateFromString เพื่อแปลง String ให้เป็น Date Object (BSON Date)

ไวยากรณ์


db.yourCollectionName.aggregate([
    {
        $project: {
            anyVariableName: {
                $dateFromString: {
                    dateString: "$yourFieldName"
                }
            }
        }
    }
]);

สร้างข้อมูลตัวอย่าง (String Date Format: DD-MM-YYYY)


> db.ConvertStringToDateDemo.insertOne({"ArrivalDate": "20-10-2019"});
> db.ConvertStringToDateDemo.insertOne({"ArrivalDate": "21-02-2019"});
> db.ConvertStringToDateDemo.insertOne({"ArrivalDate": "10-12-2018"});
> db.ConvertStringToDateDemo.insertOne({"ArrivalDate": "31-01-2017"});

แสดงเอกสาร (String)


> db.ConvertStringToDateDemo.find().pretty();

แปลง String → Date


> db.ConvertStringToDateDemo.aggregate([
    {
        $project: {
            StringToDate: {
                $dateFromString: { dateString: "$ArrivalDate" }
            }
        }
    }
]).pretty();

ผลลัพธ์ (ISODate UTC)


{ "_id" : ObjectId("5c6ef3596fd07954a489069f"), "StringToDate" : ISODate("2019-10-20T00:00:00Z") }
{ "_id" : ObjectId("5c6ef3616fd07954a48906a0"), "StringToDate" : ISODate("2019-02-21T00:00:00Z") }
{ "_id" : ObjectId("5c6ef36d6fd07954a48906a1"), "StringToDate" : ISODate("2018-12-10T00:00:00Z") }
{ "_id" : ObjectId("5c6ef37b6fd07954a48906a2"), "StringToDate" : ISODate("2017-01-31T00:00:00Z") }
หมายเหตุ: $dateFromString รองรับ Format มาตรฐาน ISO 8601 (YYYY-MM-DD) ได้ดีที่สุด Format DD-MM-YYYY อาจต้องใช้ $dateFromString ร่วม format option ใน MongoDB 4.0+ หรือ Pre-process ก่อน Insert