ในการแก้ไขปัญหานี้ ให้ใช้ $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") }