我的mongodb集合中有以下记录:
{
"_id" : ObjectId("5a7641b0d4b6828ad37c9a66"),
"factor" : 1,
"postdate" : ISODate("2018-01-31T05:00:00.000Z"),
}
我想进行搜索时不考虑时间戳,只考虑年,月,日。我该怎么办?
以下内容不起作用,因为该记录具有一个时间戳记,使其无法显示在我的搜索中:
db.transtest.find({postdate: { $gte : new Date("2018-01-01"), $lte : new Date("2018-01-31")}})
答案 0 :(得分:1)
要包括该月的最后一天,请使用$lt
和下个月的第一天:
db.transtest.find({postdate: { $gte: new Date("2018-01-01"), $lt: new Date("2018-02-01")}})
答案 1 :(得分:0)
只需将最大日期时间添加到$ lt日期标准中:
db.transtest.find({postdate: { $gte : new Date("2018-01-01"), $lte : new Date("2018-01-31T23:59:59.999Z")}})
您肯定会获得所有结果,因为ISOdate的精度是毫秒
BSON日期是一个64位整数,代表自Unix时代(1970年1月1日)以来的毫秒数。
此外,自记录起,它会自动处理时区
{
"_id" : ObjectId("5b459ef6744c541aa898cdd4"),
"factor" : 1,
"postdate" : ISODate("2018-02-01T00:10:00.000+0100") // <== Note the date with +1 hour TZ, same as ISODate("2018-01-31T23:10:00.000Z")
}
也将返回。