我想找到昨天创建的所有用户。这是我制作查询字符串的代码:
var today = new Date();
var a = today.getDate();
a--;
today.setDate(a);
var yesterday = today.toDateString();
它返回类似于:2016年1月17日星期日...这是昨天的日期,但是数据库以iso格式存储日期,如:"date" : ISODate("2016-01-13T13:23:08.419Z")
所以我得到的是2016-01-13T13:23:08.419Z
。我现在的问题是我不能使用昨天变量来查询我需要的用户的数据库,即使我可以,我也不知道如何查找每个注册,不包括今天发生的注册。
有任何帮助吗?非常感谢你!
答案 0 :(得分:2)
您正在前端生成一个日期,然后将其推回一天,这在很多情况下完全没问题 -
为此,由于您正在尝试查找发生的数据库条目,因此可能尝试使用从数据库中每个文档的ID中拉出的时间戳来查询数据库。
以下是有关如何从mongoDB执行此操作的一些文档。 https://docs.mongodb.org/v3.0/reference/method/ObjectId.getTimestamp/
我还提供了一些额外的资源,可以帮助您确定要查询的方法:
https://steveridout.github.io/mongo-object-time/
https://gist.github.com/tebemis/0e55aa0089e928f362d9
一些伪代码:
$(this).attr('upc')
我希望这有帮助!
答案 1 :(得分:1)
尝试使用Moment.js:
yesterday = moment().add(-1, 'days');
db.users.find({ "date": { "$lt": yesterday }});
答案 2 :(得分:0)
创建一个代表今天开始的日期对象,使用它来查询集合中date
字段小于该变量的文档,如下例所示
var start = new Date();
start.setHours(0,0,0,0);
db.users.find({ "date": { "$lt": start }});
这将查找昨天结束前创建的用户。
momentjs 是一个非常方便的实用程序,用于执行此类操作。使用该库,这可以通过当前日期对象上的startOf()
方法实现,并将字符串'day'
作为参数传递:
本地GMT:
var start = moment().startOf('day'); // set to 12:00 am today
db.users.find({ "date": { "$lt": start }});
var start = moment.utc().startOf('day');