You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java驱动中r.row未实现,需用Lambda语法改写RethinkDB查询

解决RethinkDB Java驱动中r.row未实现的问题

我完全懂你遇到的麻烦——RethinkDB的Java驱动确实没实现r.row语法,不过咱们用Lambda表达式就能完美替代,还能保持原有的查询逻辑不变。

改写后的完整代码

import com.rethinkdb.net.Connection;
import com.rethinkdb.net.Cursor;
import static com.rethinkdb.RethinkDB.r;

// ... 你的connector和connection初始化代码 ...

Cursor<String> cursor = r.db("squirrel")
    .table("knownurifilter")
    // 注:当前指定的"uri"索引对timestampNextCrawl的过滤没有优化作用,
    // 如果这个查询是高频操作,建议给timestampNextCrawl字段单独创建索引
    .optArg("index", "uri")
    // 用Lambda参数doc替代r.row,doc代表当前遍历的文档对象
    .filter(doc -> doc.g("timestampNextCrawl").le(System.currentTimeMillis()))
    // 提取uri字段并转换为Java String类型,保证Cursor<String>类型匹配
    .map(doc -> doc.g("uri").string())
    .run(connector.connection);

关键改动说明

  • 替换r.row:在filter方法中传入Lambda表达式,参数doc就对应原代码里的r.row,通过doc.g("字段名")就能访问文档中的属性。
  • 类型匹配优化:原代码的.g("uri")返回的是Expr对象,加上.string()可以明确转换为Java的String类型,确保和Cursor<String>的泛型类型一致。
  • 索引优化提示:你现在指定的uri索引对时间戳的过滤没有帮助,如果这个查询经常执行,建议给timestampNextCrawl创建索引,能大幅提升查询效率。

如果还有其他疑问,随时提出来!

内容的提问来源于stack exchange,提问作者Philip Frerk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:52:57