2016-01-18 49 views
1

我想查找到昨天爲止創建的所有用戶。這是我的代碼,以使查詢字符串:Mongoose.js在數據庫中找到昨天的日期

var today = new Date(); 
var a = today.getDate(); 
a--; 
today.setDate(a); 
var yesterday = today.toDateString(); 

,並返回類似:太陽2016年1月17日......這是昨天的日期,但DB存儲ISO格式的日期,如:"date" : ISODate("2016-01-13T13:23:08.419Z")所以我得到是2016-01-13T13:23:08.419Z。我現在的問題是,我不能使用昨天的變量來查詢我需要的用戶數據庫,即使我可以,我也不知道如何找到每個註冊,但不包括今天發生的註冊。

任何幫助?非常感謝你!

回答

1

您在前端生成一個日期,然後把它推回去了一天,這是一個很大的情況完全正常 -

對於這一點,因爲你正在努力尋找所發生DB項,也許試着用從數據庫中每個文檔的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

一些僞代碼:

1. Query documents in the database 
2. Get a timestamp from the ID's of the documents in the database 
3. Set a range of the timestamps 
4. Compare returned timestamps vs a timestamp range variable (yesterdays date in this case) 
5. Have the DB return only documents that are within the range 

我希望這有助於!

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 }}); 

For UTC:

var start = moment.utc().startOf('day'); 
1

試試這個,用Moment.js

yesterday = moment().add(-1, 'days'); 
db.users.find({ "date": { "$lt": yesterday }});