ใช้ 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ร่วมformatoption ใน MongoDB 4.0+ หรือ Pre-process ก่อน Insert