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

แก้ไข Error: Failed to convert from type String to type Date ใน MongoDB

แก้ไขข้อผิดพลาดการแปลง String เป็น Date

เพื่อแก้ไขปัญหานี้ ให้ใช้ $dateFromString ใน aggregate() ของ MongoDB Operator $dateFromString จะแปลง String วันที่/เวลาให้เป็น Date Object

สร้าง Collection พร้อมข้อมูล

> db.demo619.insertOne({"DueDate":"10-10-2020"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e99d7846c954c74be91e69e") }
> db.demo619.insertOne({"DueDate":"12-01-2019"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e99d7996c954c74be91e69f") }
> db.demo619.insertOne({"DueDate":"28-10-2010"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e99d7ab6c954c74be91e6a0") }

แสดงเอกสารทั้งหมด

> db.demo619.find();

ผลลัพธ์:

{ "_id" : ObjectId("5e99d7846c954c74be91e69e"), "DueDate" : "10-10-2020" }
{ "_id" : ObjectId("5e99d7996c954c74be91e69f"), "DueDate" : "12-01-2019" }
{ "_id" : ObjectId("5e99d7ab6c954c74be91e6a0"), "DueDate" : "28-10-2010" }

คิวรีแปลง String เป็น Date Object

> db.demo619.aggregate( [ {
...     $project: {
...         DueDate: {
...             $dateFromString: {
...                 dateString: '$DueDate',
...                 timezone: 'America/New_York'
...             }
...         }
...     }
... } ] )

ผลลัพธ์:

{ "_id" : ObjectId("5e99d7846c954c74be91e69e"), "DueDate" : ISODate("2020-10-10T04:00:00Z") }
{ "_id" : ObjectId("5e99d7996c954c74be91e69f"), "DueDate" : ISODate("2019-01-12T05:00:00Z") }
{ "_id" : ObjectId("5e99d7ab6c954c74be91e6a0"), "DueDate" : ISODate("2010-10-28T04:00:00Z") }