RethinkDb:在给定时间戳之前获取 X 个条目
RethinkDb: Get X entries before given timestamp
我想使用时间戳查询我的 RethinkDB,并在 return 中获取该时间戳之前的前 X 个条目。
到目前为止我尝试过的是:
r.db('deepstream').table('chat').filter(function (message) {
return message("_d")("timestamp").lt(<timestamp>);
}).limit(X);
这给了我在给定时间戳之前的 X 个条目,但不是我想要的顺序。
我的条目如下所示:
{
"_d": {
"id": "chat/ibcta7zt-5k6ldeay2xr" ,
"message": "sadas" ,
"timestamp": 1435274339341 ,
"user": "Emil"
} ,
"_v": 1 ,
"ds_id": "ibcta7zt-5k6ldeay2xr"
}
"ds_id" 的前半部分是一个 base64 编码的时间戳,如果这对您有帮助的话。
我如何查询数据库以确保我得到的结果是 X 条之前的消息,而不仅仅是 X 条之前到达的随机消息?
根据时间戳降序排列数据库解决了我的问题。
r.db('deepstream').table('chat').orderBy({index: r.desc('ds_id')})
.filter(function (message) {
return message("_d")("timestamp").lt(<timestamp>);
}).limit(X);
我想使用时间戳查询我的 RethinkDB,并在 return 中获取该时间戳之前的前 X 个条目。
到目前为止我尝试过的是:
r.db('deepstream').table('chat').filter(function (message) {
return message("_d")("timestamp").lt(<timestamp>);
}).limit(X);
这给了我在给定时间戳之前的 X 个条目,但不是我想要的顺序。
我的条目如下所示:
{
"_d": {
"id": "chat/ibcta7zt-5k6ldeay2xr" ,
"message": "sadas" ,
"timestamp": 1435274339341 ,
"user": "Emil"
} ,
"_v": 1 ,
"ds_id": "ibcta7zt-5k6ldeay2xr"
}
"ds_id" 的前半部分是一个 base64 编码的时间戳,如果这对您有帮助的话。
我如何查询数据库以确保我得到的结果是 X 条之前的消息,而不仅仅是 X 条之前到达的随机消息?
根据时间戳降序排列数据库解决了我的问题。
r.db('deepstream').table('chat').orderBy({index: r.desc('ds_id')})
.filter(function (message) {
return message("_d")("timestamp").lt(<timestamp>);
}).limit(X);