我有一个日期选择器小部件指定的日期:
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错误
答案 0 :(得分:0)
将targetDate
转换为与createdAt
相同的类型,并在查询时将其用作tatgetDate
。并非现在使用dateTarget
(您输入错了)。
答案 1 :(得分:0)
您必须将目标日期转换为ISODate格式。但这在默认情况下会由猫鼬照顾。.您要做的是像这样更改查询
Model.find({createdAt:{$gte:params.frm, $lte:params.to}},callback);
或者如果您只想给出一个日期,请尝试这样
Model.find({createdAt:dateTarget},callback);