可以查询具体日期吗?
我在mongo Cookbook中发现,我们可以这样做一个range Querying for a Date Range:
db.posts.find({"created_on": {"$gte": start, "$lt": end}})但是有没有可能确定一个具体的日期呢?这不起作用:
db.posts.find({"created_on": new Date(2012, 7, 14) })发布于 2012-08-16 00:40:06
如果保存在数据库中的日期没有时间(只有年、月、日),这应该是可行的。
您保存的日期很可能是new Date(),其中包括时间部分。要查询这些时间,您需要创建一个包含一天中所有时刻的日期范围。
db.posts.find({ //query today up to tonight
created_on: {
$gte: new Date(2012, 7, 14),
$lt: new Date(2012, 7, 15)
}
})发布于 2014-12-25 02:40:09
...5+几年后,我强烈建议使用date-fns
import endOfDayfrom 'date-fns/endOfDay'
import startOfDay from 'date-fns/startOfDay'
MyModel.find({
createdAt: {
$gte: startOfDay(new Date()),
$lte: endOfDay(new Date())
}
})对于我们这些使用Moment.js的人
const moment = require('moment')
const today = moment().startOf('day')
MyModel.find({
createdAt: {
$gte: today.toDate(),
$lte: moment(today).endOf('day').toDate()
}
})重要信息: !
tomorrow = today.add(1, 'days')不起作用,因为它还会改变today。通过隐式克隆today,调用moment(today)解决了这个问题。
发布于 2014-01-04 03:26:09
是的,Date对象完成了date和time,所以只与Date值比较是行不通的。
您可以简单地使用运算符通过Javascript布尔表达式来表达更复杂的条件:)
db.posts.find({ '$where': 'this.created_on.toJSON().slice(0, 10) == "2012-07-14"' })created_on是日期时间字段,2012-07-14是指定的日期。
日期应完全采用YYYY-MM-DD格式。
注意:谨慎使用$where,这对性能有影响。
https://stackoverflow.com/questions/11973304
复制相似问题