为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB /猫鼬在特定日期查询?

MongoDB /猫鼬在特定日期查询?

凤凰求蛊 2019-12-16 10:26:30
是否可以查询特定日期?我在mongo Cookbook中发现我们可以针对某个范围进行查询 ,例如:db.posts.find({"created_on": {"$gte": start, "$lt": end}})但是可能有特定的日期吗?这不起作用:db.posts.find({"created_on": new Date(2012, 7, 14) })MongoDB /猫鼬在特定日期查询?
查看完整描述

4 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

如果您保存在数据库中的日期没有时间(恰好是年,月,日),那应该可行。


您保存的日期可能是new Date(),其中包括时间成分。要查询这些时间,您需要创建一个包含一天中所有时刻的日期范围。


db.posts.find( //query today up to tonight

  {"created_on": {"$gte": new Date(2012, 7, 14), "$lt": new Date(2012, 7, 15)}})


查看完整回答
反对 回复 2019-12-16
?
FFIVE

TA贡献1797条经验 获得超6个赞

对于使用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。调用moment(today)通过隐式克隆解决了该问题 today。


查看完整回答
反对 回复 2019-12-16
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

你有没有尝试过:


db.posts.find({"created_on": {"$gte": new Date(2012, 7, 14), "$lt": new Date(2012, 7, 15)}})

您将要遇到的问题是日期在Mongo中存储为时间戳。因此,要匹配日期,您要求它匹配时间戳。就您的情况而言,我认为您要尝试匹配一天(即特定日期的00:00到23:59)。如果您的日期没有时间存储,那您就可以了。否则,如果gte不起作用,请尝试将您的日期指定为同一天的时间范围(例如,开始= 00:00,结束= 23:59)。


查看完整回答
反对 回复 2019-12-16
  • 4 回答
  • 0 关注
  • 927 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信