我有一个日期选择器小部件给出的这个日期:
let targetDate = '2019-01-12';
我的所有文档都有一个由时间戳生成的createtAt 日期:
"createdAt": "2019-01-12T21:49:05.546Z"
我想获取该字段创建的所有文档与我给定的日期匹配。我尝试使用$elemMatch:
const allDailies = await Daily.find({ createdAt: { $elemMatch: dateTarget } });
const allDailies = await Daily.find({ createdAt: { $elemMatch: { from: dateTarget, to: dateTarget} } });
没有人工作,我该如何进行此查询?实际上我无法修改我的架构:(
编辑:
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 错误
将您的targetDate
转换为与createdAt
相同的类型,并将其用作tatgetDate
查询。不像您现在使用它那样dateTarget
(您输入错误)。
您必须将
目标日期转换为 ISODate 格式。但默认情况下,这将由猫鼬照顾,所以..您要做的是像这样更改查询
Model.find({createdAt:{$gte:params.frm, $lte:params.to}},callback);
或者,如果您只想约会一次,请尝试以下操作
Model.find({createdAt:dateTarget},callback);