node.js - 在 Mongoose 中使用 ISODate 的正确方法是什么

标签 node.js mongodb mongoose

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

最佳答案

实际上,您已在架构中将 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()
  }
});

关于node.js - 在 Mongoose 中使用 ISODate 的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55500690/

相关文章:

node.js - 从我的nodejs服务器调用google apps脚本

javascript - 处理重复任务的警报模式

node.js - 如何将 Azure DevOps 构建管道连接到专用终结点

javascript - 无法从浏览器访问动态添加到公共(public)目录的文件 - Meteor 应用程序

mongodb - 为什么用 $out 聚合两个集合永远不会结束? MongoDB

javascript - Mongoose 有条件更新文档

node.js - 如何在elasticsearch中进行精确匹配?

node.js - 每当主机关闭时 MongoDB 就会删除

javascript - 查找数组包含多于 X 条记录的记录?

javascript - 如何更新 mongoose 中查询前或查询后 Hook 的文档?