当我使用查找查询时,它会将日期作为对象返回,而使用聚合时,会在使用时刻转换后将日期作为字符串。为什么呢?
查询
this.find({},{
"updated_at":1,
"created_at":1,
},callback);
汇总查询
this.aggregate([{
$project:{
"updated_at" :1,
"created_at" :1,
}
}],callback);
现在,当我使用时刻将日期转换为EST时,我得到以下结果
// lets say query result is in dataArray
var created_at = moment(dataArray[0].created_at);
var created_at_est = created_at.clone().tz("America/New_York");
dataArray[0].created_at = created_at_est.format('ddd MMM DD YYYY HH:mm:ss');
console.log(typeof(dataArray[0].created_at));
// result is string in aggregate query and object in find query
我无法理解为什么会这样?谁能解释一下呢?
答案 0 :(得分:2)
因为NavigationController
将其结果作为Mongoose文档实例(无法自由修改)提供,而find
将其结果作为普通对象(可以)提供。< / p>
因此,如果您要修改aggregate
结果中的created_at
字段,请告知Mongoose通过链接lean()
来提供普通对象:
find
答案 1 :(得分:0)
format
方法返回字符串。当您使用format
想要向用户显示并且是显示功能时。