如何解决Mongo将时间戳转换为日期
我在mongo中仍然是新手,但我在mongo集合中有一个数据,其结构如下:
{
"_id" : ObjectId("5f79931104a8f102f761398e"),"data1" : "This is a data","data2" : "This is a data","timeStampVar" : Timestamp(1603377200,0),},
目前,我正在尝试使用timeStampVar捕获过去14天的数据。到目前为止,我的代码是这样的:
var yesterdayStart = new Date();
yesterdayStart.setDate(yesterdayStart.getDate() - 14);
yesterdayStart.setUTCHours(0,0);
var yesterdayEnd = new Date();
yesterdayEnd.setDate(yesterdayEnd.getDate() - 1);
yesterdayEnd.setUTCHours(23,59,999);
db.collection_name.aggregate([{
"$addFields": {
"date": {"$toDate": "$timeStampVar"}
}
},{
"$match": {
"date": { $gte: yesterdayStart,$lte: yesterdayEnd},}
},])
尝试使用$ toDate将我的10位时间戳转换为日期对象时遇到问题。就像这样说:
{
"message" : "Unsupported conversion from timestamp to date in $convert with no onError value","ok" : 0,"code" : 241,"codeName" : "ConversionFailure","name" : "MongoError"
}
我在这里想念什么吗?在$ toDate的mongo文档中,我看到示例使用的是13位时间戳,可能是它不支持10位时间戳吗?
https://docs.mongodb.com/manual/reference/operator/aggregation/toDate/
提前致谢
解决方法
每当必须使用javascript中的日期/时间值时,我建议使用Moments.js库。它使您的生活更加轻松。
会是这样的:
{
"$match": {
"date": {
$gte: moment().subtract(14,'days'),startOf('day').toDate(),$lte: moment().subtract(1,endOf('day').toDate(),},}
}
看看Timestamps:
注意
BSON
timestamp
类型供 内部 MongoDB使用。在大多数情况下,在应用程序开发中,您将需要使用BSONdate
类型。有关更多信息,请参见Date。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。