2016-01-20 55 views
2

我想運行一個查詢,獲取從提供的日期到今天爲止的所有文檔的lastUpdateDateRethinkdb查詢兩個日期之間的數據

lastUpdateDated的定義如下

lastUpdateDate = new Date() - >Tue Jan 19 2016 20:45:32 GMT+00:00

RethinkDB Admin console

r.db('water').table('ground_water').filter(function (test) { 
    return test("lastUpdateDate").during(r.time(2015,1,1, 'Z'), r.now().date()) 
}); 

下工作,但這裏是實際的代碼(我要做的日期一些處理)

.table('ground_support_water_tests') 
       .filter(function(test) { 
       return test("lastUpdateDate").during(
        r.time(2016,1,19, 'Z'), 
        r.now().date()) 
       }) 
       .run() 
       .then((results) => { 
       console.log(results); 
       done(null, results); 
       }) 
       .catch((err) => {console.log(err); }); 

這不會返回錯誤或結果。我顯然不喜歡在那裏對日期進行硬編碼,所以我有一些邏輯來製作新的r.time(yyyy,dd,mm),但是這給了我與這個硬編碼相同的結果。

+0

你可以顯示你的數據的例子,比如「lastUpdateDate」是什麼樣子嗎? – dalanmiller

+0

當然...新增'Tue Jan 19 2016 20:45:32 GMT + 00:00' –

回答

2

我認爲你的查詢可能包含一些陷阱。

首先,我建議你添加rightBound: "closed"選項。因爲你在date()比較,你根本不在乎時間。

其次,我建議你改變test("lastUpdateDate") - >test("lastUpdateDate").date()因爲你與date刪除時間,它成爲Wed Jan 20 2016 00:00:00 GMT+00:00而作爲test("lastUpdateDate")Wed Jan 20 2016 18:00:00 GMT+00:00例如。

所以讓我們試試這個:

.table('ground_support_water_tests') 
       .filter(function(test) { 
       return test("lastUpdateDate").date().during(
        r.time(2016,1,19, 'Z'), 
        r.now().date()) 
       }, {rightBound: "closed"}) 
       .run() 
       .then((results) => { 
       console.log(results); 
       done(null, results); 
       }) 
       .catch((err) => {console.log(err); }); 

更新:

我嘗試使用的NodeJS官方驅動:

var r = require('rethinkdb') 

r.connect().then(function(conn) { 
    r.table('t') 
    .filter((test) => { 
     return test("lastUpdateDate").date().during(r.time(2015,1,1, 'Z'), r.now().date(), {rightBound: "closed"}) 
    }) 
    .run(conn) 
    .then((cursor) => { return cursor.toArray() }) 
    .then((data) => { console.log(data) }) 
}) 

在此日期設置:

[{ 
"id": "4917c8a1-1639-400c-964c-458d58b5bfcc" , 
"lastUpdateDate": Wed Jan 20 2016 21:12:51 GMT+00:00 
}] 

查詢正確返回數據。

+0

好的建議感謝您的幫助。上述更改沒有修復它。我使用'rethinkdbdash'驅動程序。在管理控制檯中,我們的兩個代碼均可使用。 –

+1

您可以嘗試切換到官方驅動程序,看看它是否修復,那麼我們可以潛水更多?同樣對於這些數據,'{ 「id」:「4917c8a1-1639-400c-964c-458d58b5bfcc」, 「lastUpdateDate」:Wed Jan 20 2016 21:12:51 GMT + 00:00 }'。在RethinkDB控制檯上,您的查詢失敗,我的查詢工作。這導致我的答案... – kureikain

+0

只需切換到本機驅動程序,並按預期工作。所以這個問題似乎是'rethinkdbdash'。 –

相關問題