MongoDB/Mongoose - 查找特定日期在日期范围内的所有位置

时间:2021-04-18 19:25:56

标签: javascript node.js database mongodb mongoose

例如我有这个字段的文档:

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

并且我想获取特定日期(如今天)在日期范围内的所有文档。 是否可以进行这样的查询? 例如,如果我搜索 18th April,那么我会得到那个文档。

我是这样想的:

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 中调用它,但返回一个空的 []...

1 个答案:

答案 0 :(得分:1)

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

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