猿问

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

是否可以查询特定日期?


我在mongo Cookbook中发现我们可以针对某个范围进行查询 ,例如:


db.posts.find({"created_on": {"$gte": start, "$lt": end}})

但是可能有特定的日期吗?这不起作用:


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

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

凤凰求蛊
浏览 928回答 4
4回答

慕斯王

如果您保存在数据库中的日期没有时间(恰好是年,月,日),那应该可行。您保存的日期可能是new Date(),其中包括时间成分。要查询这些时间,您需要创建一个包含一天中所有时刻的日期范围。db.posts.find( //query today up to tonight  {"created_on": {"$gte": new Date(2012, 7, 14), "$lt": new Date(2012, 7, 15)}})

FFIVE

对于使用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。

繁华开满天机

你有没有尝试过: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)。
随时随地看视频慕课网APP

相关分类

MongoDB
Node.js
我要回答