在Mongoose中,如何正确使用ISODate?

3

我正在尝试使用mongoose调用mongodb集合,但在调用中使用日期时遇到了问题。

最初的回答:

const siteReviews = await Review.countDocuments({
  'clientId': clientObj.ClientBrandID, 
  'siteSource': 'SomeSite', 
  'reviewDate':{
      $gt:"2018-12-24T18:04:47.806Z",
      $lt:"2019-04-03T17:04:47.806Z"
  }
})

我确信在这两个日期之间有数据,但查询返回0。我尝试直接在代码中使用ISODate(""),但它出现了错误。最初的回答:据我所知这两个日期之间应该存在数据,但查询结果却为0。我也尝试在代码中直接使用ISODate(""),但是出现了错误。
1个回答

2
实际上,在您的模式中,您已经将reviewDate字段的type定义为Date,但在这里您却传递了String类型。
因此,您需要将String日期转换为Date对象,可以使用moment库轻松完成。
const googleReviews = await Review.countDocuments({
  clientId: clientObj.ClientBrandID,
  siteSource: "SomeSite",
  reviewDate: {
    $gt: moment("2018-12-24T18:04:47.806Z").toDate(),
    $lt: moment("2019-04-03T17:04:47.806Z").toDate()
  }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接