获取给定日期的所有文档? (createdAt)

时间:2019-01-12 23:55:06

标签: javascript mongoose

我有一个日期选择器小部件指定的日期:

let targetDate = '2019-01-12';

我所有的文档都有一个由时间戳生成的createtAt日期:

"createdAt": "2019-01-12T21:49:05.546Z"

我想获取所有字段createdAt与给定日期匹配的文档。 我尝试使用$ elemMatch:

const allDailies = await Daily.find({ createdAt: { $elemMatch: dateTarget } });

const allDailies = await Daily.find({ createdAt: { $elemMatch: { from: dateTarget, to: dateTarget} } });

没有人可以使用,如何进行此查询?实际上,我无法修改Schema:(

编辑:

router.get('/daily/:date', async (req, res) => {
  try {
    const targetDate = new RegExp(`^${req.params.date}`);
    const allDailies = await Daily.find({ createdAt: { $regex: targetDate } });
    console.log('Dailies', allDailies);
    return res.json({ allDailies });
  } catch (error) {
    return res.sendStatus(httpStatus.INTERNAL_SERVER_ERROR);
  }
});

返回500错误

2 个答案:

答案 0 :(得分:0)

targetDate转换为与createdAt相同的类型,并在查询时将其用作tatgetDate。并非现在使用dateTarget(您输入错了)。

答案 1 :(得分:0)

您必须将目标日期转换为ISODate格式。但这在默认情况下会由猫鼬照顾。.您要做的是像这样更改查询

Model.find({createdAt:{$gte:params.frm, $lte:params.to}},callback);

或者如果您只想给出一个日期,请尝试这样

Model.find({createdAt:dateTarget},callback);