我想运行一个查询,该查询从截至今天的日期获取lastUpdateDate
的所有文档。
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 :(得分: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); });
。
所以让我们试试这个:
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) })
})
更新
我尝试将NodeJS与官方驱动器一起使用:
[{
"id": "4917c8a1-1639-400c-964c-458d58b5bfcc" ,
"lastUpdateDate": Wed Jan 20 2016 21:12:51 GMT+00:00
}]
在此日期设定:
{{1}}
查询正确返回数据。