我的收藏中有出生日期字段,以ISO格式保存数据: -
ISODate("1980-01-01T20:20:19.198Z")
在我的html页面中,日期时间选择器会在模型中显示日期: -
01/01/1980
当我查询出生日期时,它没有给我任何东西,所以我尝试了: -
dateofbirth = new Date(req.params.sdob);
dateofbirthFormatted = dateofbirth.toISOString();
仍然没有给出任何结果。这个问题的正确解决方案是什么?
答案 0 :(得分:1)
你需要你的"日期字符串" in" yyyy-mm-dd"为了获得与您想要的相同的ISO日期,所以有一个开始。如果你的" timepicker"无法以这种方式生成然后操纵控制器中的数据。假设" dd / mm / yyyy":
var start_date = new Date(string.split("/").reverse().join("-"));
此外,因为您的出生日期"更像是一个"时间戳"值与完全匹配该日期,然后只需转换为带有开始和结束的日期范围,并使用" range"操作符:
// Adding one day in date math or other method
var start_date = new Date(string.split("/").reverse().join("-"))
end_date = new Date( start_date.valueOf() + ( 1000 * 60 * 60 * 24 ) );
db.collection.find({ "birthday": { "$gte": start_date, "$lt": end_date } })
基本上寻找"生日"中的所有价值观可能范围从" 1980-01-01:00:00:00.000Z"和" 1980-01-01:23:59:59.999Z"
答案 1 :(得分:0)