String to date()函数不返回正确的ISO Date

时间:2017-12-07 04:56:28

标签: mongodb date mongodb-query aggregation-framework project

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

此项目返回

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

在这看到这里我遇到麻烦它输出不正确

  

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

因为手动添加字符串

时输出正确
  

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

2 个答案:

答案 0 :(得分:0)

不幸的是,顶部框中的代码不完整。

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

答案 1 :(得分:0)

新的日期(" $ date")在将此日期传递给mongodb聚合管道之前进行评估,直到那时" $ date"只是javascript engin的正常字符串

对于mongodb 3.6你可以使用

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

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