使用Moment的Mongo数据库查询中的日期无效

时间:2017-05-06 06:46:20

标签: mongodb mongodb-query aggregation-framework momentjs

我执行了以下查询,

db.SBM_USER_DETAIL.aggregate([

    {
        $project: {
            join_date: moment('$JOIN_DATE').locale('es').tz("Asia/Kolkata").format()
        }
    }
]) 

但结果是,

日期无效

它存储在mongo db中的值为“” JOIN_DATE“:ISODate(”2017-01-30T18:30:00.000Z“)

为什么它会成为“无效日期”?

我不知道我的错误,请帮助我。

1 个答案:

答案 0 :(得分:1)

聚合管道无法直接处理任意javascript。在您的示例中,在替换文档字段之前,shell会调用moment函数,因此该值无效。

要在每个文档中应用javascript函数字段,请使用.map,如下所示:

db.SBM_USER_DETAIL.aggregate([

    {
        $project: {
            join_date: '$JOIN_DATE' 
        }
    }
]).map(
    function(d) {
       d.join_date = moment(d.join_date).locale('es').tz("Asia/Kolkata").format();
       return d
})