Javascript 矩将日期转换为查找查询的字符串和聚合查询的对象。如何及;为什么?
当我使用find查询时,它将日期作为对象返回,而使用aggregate时,它在使用矩转换后将日期作为字符串返回。为什么? 查找查询Javascript 矩将日期转换为查找查询的字符串和聚合查询的对象。如何及;为什么?,javascript,mongodb,mongoose,mongodb-query,momentjs,Javascript,Mongodb,Mongoose,Mongodb Query,Momentjs,当我使用find查询时,它将日期作为对象返回,而使用aggregate时,它在使用矩转换后将日期作为字符串返回。为什么? 查找查询 this.find({},{ "updated_at":1, "created_at":1, },callback); 聚合查询 this.aggregate([{ $project:{ "updated_at" :1, "created_at" :1, } }],callback); 现在,当我使
this.find({},{
"updated_at":1,
"created_at":1,
},callback);
聚合查询
this.aggregate([{
$project:{
"updated_at" :1,
"created_at" :1,
}
}],callback);
现在,当我使用moment将日期转换为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
我不明白为什么会这样?有人能解释一下吗?
format
方法返回字符串。使用格式时
要向用户显示,并且是显示功能 这是因为find
将其结果提供为Mongoose文档实例(不能自由修改),而aggregate
将其结果提供为普通对象(可以修改)
因此,如果您想修改查找
结果中的在
处创建的字段,请告诉Mongoose提供普通对象,方法是将调用链接到:
这不是我问题的答案:/@shubhamsaini如何测试它是字符串还是对象?在你的样本中你没有解释,所以对不起!!我已经编辑了最后一行代码。请现在检查。@shubhamsaini在这一行
dataArray[0]。created_at=created_at_est.format('ddd MMM DD YYYY HH:mm:ss')代码>您将其设置为字符串format
方法返回string如果我按照您的方法执行,那么在这两种情况下它都应该给出string,但事实并非如此。只有当我使用聚合查询时,它才会给出字符串。该死的信息。只有你能做到。非常感谢:)
this.find({},{
"updated_at":1,
"created_at":1,
}).lean().exec(callback);