我想查询或过滤特定的访问日志以获取unix时间戳(开始和结束)。但是,使用下面的普通过滤器将永远需要查询。 该表中有超过1M条记录。
此外,还有一个二级索引unixTimestamp
,我想使用它,这样它会快很多。我的问题是如何使用该二级索引unixTimestamp
并执行如下所示的查询?
重新考虑查询:
r.db("my_db")
.table("my_access_log")
.filter(
function(accessLog) {
return accessLog("unixTimestamp").ge(1550660220)
.and(accessLog("unixTimestamp").le(1550663580));
}
)
样本数据(访问日志):
{
"access": "Granted" ,
"createdDateS": "2019-02-19T18:17:01" ,
"id": "abc123" ,
"sn": "123413523523" ,
"unixTimestamp": 1550563149 ,
"user": dummyuser@dummies.com, »
}
谢谢!
答案 0 :(得分:1)
很抱歉,我要尽快发布答案,我需要尽快找到答案,然后才发现自己...我只是将其发布,以防万一有人遇到相同的问题。
r.db("my_db")
.table("my_access_log")
.between(1550660220, 1550663580, {"index": "unixTimestamp"})
.orderBy({index: r.desc('unixTimestamp')})
这是在Unix时间戳unixTimestamp
和1550660220 (start)
之间使用辅助索引1550663580 (end)
进行搜索。然后按unixTimestamp
字段的降序对结果进行排序。
如果您需要按日期进行过滤...只需替换between(start, end)
值即可。
有了这个,如果我的表有将近200万条记录,那么我将不使用二级索引就可以立即比较记录。
希望这会有所帮助!