首页 > 解决方案 > 在 Mongoose 中使用 ISODate 的正确方法是什么

问题描述

我正在尝试使用 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("") 但它正在破坏

标签: node.jsmongodbmongoose

解决方案


实际上,您已经在架构中定义了type字段reviewDate的,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()
  }
});

推荐阅读