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

MongoDB – แก้ไข “ล้มเหลวในการแปลงจากประเภท String เป็นประเภท Date”?


ในการแก้ไขปัญหานี้ ให้ใช้ $dateFromString ใน MongoDB aggregate() $dateFromString แปลงสตริงวันที่/เวลาเป็นวัตถุวันที่

ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> 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")
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo619.find();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

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

ต่อไปนี้เป็นแบบสอบถามที่จะแปลงจากสตริงวันที่/เวลาเป็นวัตถุวันที่ -

> 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") }