Mongodb Mongo将时间戳转换为日期

Mongodb Mongo将时间戳转换为日期,mongodb,unix-timestamp,to-date,Mongodb,Unix Timestamp,To Date,我在mongo中还是新手,但我在mongo中有一个数据集合,其结构如下: { "_id" : ObjectId("5f79931104a8f102f761398e"), "data1" : "This is a data", "data2" : "This is a data", "timeStampVar" : Timest

我在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,0,0);


var yesterdayEnd = new Date();
yesterdayEnd.setDate(yesterdayEnd.getDate() - 1);
yesterdayEnd.setUTCHours(23,59,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位时间戳吗




提前感谢每当需要使用javascript中的日期/时间值时,我推荐使用该库。它让你的生活更轻松

会是这样的:

{ 
 "$match": {
    "date": { 
       $gte: moment().subtract(14,'days'),startOf('day').toDate(),
       $lte: moment().subtract(1,'days'),endOf('day').toDate(),
    },
  }
}
看看:

BSON
时间戳
类型用于内部MongoDB使用。对于大多数情况,在应用程序开发中,您需要使用BSON
date
类型。有关更多信息,请参阅


您好,谢谢您的回答,因为我是mongo的新手,所以在mongo中使用Date对象而不是UNIX时间戳存储时间是一种最佳做法吗?是的,这就是我所说的。如果您的应用程序只有UNIX时间戳,请使用新日期(时间戳*1000)