String to date() 函数不 return 正确的 ISO 日期

String to date() function not return correct ISO Date

                {
                 $addFields: {
                   date: {$substr : ["$visits.visit_date", 0,10]}
                 }
               },
                {
                    $project:{
                        now: new Date(),
                        returns: new Date("2017-09-14"),
                        visit_date: "$visits.visit_date",
                        //dateDifference: { $subtract: [ new Date(), "$visits.visit_date" ] },

                        split: "$date",
                        dates: new Date("$date")
                    }
                }

这个项目return

    {
    "_id" : ObjectId("5a26856f462c9616abc98d60"),
    "now" : ISODate("2017-12-06T22:21:31.499-06:30"),
    "returns" : ISODate("2017-09-13T17:30:00.000-06:30"),
    "visit_date" : "2017-09-14 18:37:58",
    "split" : "2017-09-14",
    "dates" : ISODate("1969-12-31T17:30:00.000-06:30")
}

看到这里我遇到了麻烦它不是正确的输出

"dates" : ISODate("1969-12-31T17:30:00.000-06:30")

因为我在手动添加字符串时得到了正确的输出

"returns" : ISODate("2017-09-13T17:30:00.000-06:30"),

很遗憾,您在顶部框中的代码不完整。

您是否试图在结构中的一个地方设置日期,同时在其他地方使用它?

new Date("$date") 在传递给 mongodb 聚合管道之前评估,直到那时“$date”只是 javascript engin

的普通字符串

对于mongodb 3.6 你可以使用

db.coll.aggregate([
{
  $project:{

  date:{
         $dateFromString: {
            dateString: "$visits.visit_date"
         }
      }
  }
}