【问题标题】:OrientDB Graph API: process results of SQL queryOrientDB Graph API:处理SQL查询的结果
【发布时间】:2016-12-12 13:44:36
【问题描述】:

我正在探索与 OrientDB 图交互的方式。我正在编写 java 代码,所以我正在使用某种 java API。由于 tinkerpop 被描述为图形数据库的“JDBC”,所以我天真地假设存在执行查询然后处理结果集的等价物。

从图表中,我可以这样称呼:

graph.command(new OCommandSQL("SELECT FROM class")).execute();

然后呢? “执行”方法返回一个对象,不是很有帮助。通过打印出结果对象的类名,它似乎是一个“OrientDynaElementIterable”,不管它是什么。

所以我不确定我是否理解我如何运行查询然后迭代结果。一般来说,我实际上不了解 tinkerpop,因为我正在处理大量 OrientDB 特定类,这些类奇怪地是 tinkerpop 规范的一部分,那么这如何使我的代码在图形数据库中可移植?

【问题讨论】:

    标签: java orientdb tinkerpop


    【解决方案1】:

    从图形命令中检索Iterable 中的Vertex

    for (Vertex v : (Iterable<Vertex>) graph.command
                           (new OCommandSQL("SELECT FROM class").execute()) {
         // Do something with vertex v
    }
    

    可以在here 检索文档,您可以在其中找到以下示例

    for (Vertex v : (Iterable<Vertex>) graph.command(
                new OCommandSQL("SELECT EXPAND( out('bought') ) FROM Customer WHERE name = 'Jay'")).execute()) {
        System.out.println("- Bought: " + v);
    }
    

    【讨论】:

    • 是的,但我怎么知道呢?我的意思是我怎么知道我会得到 Vertex 实例,而不是其他任何东西?我根本找不到这方面的文档,这似乎是我想做的最基本的操作。使用控制台非常适合探索,但实际上您需要 API,据我所知,这在很大程度上没有记录
    • @TomQuarendon 我在答案中添加了对文档的引用
    • 很公平,我错过了那个例子。我浏览了大量文档,但我错过了那一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多