【问题标题】:MongoDB/Mongoose - Find all where a specific Date is in a Date RangeMongoDB/Mongoose - 查找特定日期在日期范围内的所有位置
【发布时间】:2021-07-13 02:16:16
【问题描述】:

例如,我有包含此字段的文档:

startDate: 2021-04-14T22:00:00.000+00:00
endDate: 2021-04-19T22:00:00.000+00:00

我想获取特定日期(如今天)在日期范围内的所有文档。 是否可以进行这样的查询? 例如,如果我搜索 4 月 18 日,则会得到该文档。

我是这样想的:

db.posts.find(
{
 $gte: { startDate: new Date() },
 $lt: { endDate: new Date() }
});

但这不起作用...我收到错误The provided parameters were invalid. Check your query and try again.

我认为 Node.js 中的 new Date() 不正确?

编辑:

这是我的控制器:

const getActiveTours = async (req, res) => {
  try {
    const activeTours = await Tour.find({
      startDate: { $gte: new Date() },
      endDate: { $lt: new Date() },
    }).exec();
    res.status(200).send(activeTours);
  } catch (error) {
    return res.status(500).send({ errorMessage: error });
  }
};

我导出了它,这是我的端点:

router.get('/getactivetours', tourController.getActiveTours);

我试图在 Postman 中调用它,但返回一个空的 []...

【问题讨论】:

    标签: javascript node.js database mongodb mongoose


    【解决方案1】:

    你的语法错了,试试这个:

    db.posts.find(
    {
     startDate: {$gte : new Date() },
     endDate: {$lt : new Date() }
    });
    

    【讨论】:

    • 谢谢!至少我现在没有收到任何错误,但一个空的 [] 似乎找不到任何错误
    • startDate 和 endDate 的值是 Date 对象还是存储为字符串?
    • 好吧,我做错了!必须将 gte 和 lt 换成开始和结束日期!!现在可以用了 非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2022-07-04
    • 2012-08-11
    相关资源
    最近更新 更多