0

我正在尝试进行查询以查找与模式“(订单)-[订单]->(产品)-[PART_OF]->(类别)”相对应的所有可能路径,并希望获得整个路径(即所有 3 个节点和 2 个关系作为它们的适当类)。

我在下面使用的方法只让我有 1 列数据(订单数:2155)。如果我再试一次(第二个 for 循环),我得到的行数是 0(产品数:0)。有没有办法将所有结果保存为节点和关系,还是我必须查询该命令 5 次?请帮忙!

String query = "MATCH (o:Order)-[:ORDERS]->(p:Product)-[:PART_OF]->(cate:Category) return o,p,cate";
    try( Transaction tx = db.beginTx();
         Result result = db.execute(query) ){
        Iterator<Node> o_column = result.columnAs( "o" );
        int i = 0;
        for ( Node node : Iterators.asIterable( o_column ) )
        {
            i++;
        }
        System.out.println("number of orders: " + i);
        i = 0;
        Iterator<Node> p_column = result.columnAs( "p" );
        for ( Node node : Iterators.asIterable( p_column ) )
        {
            i++;
        }
        System.out.println("number of products: " + i);

        tx.success();
    }
4

2 回答 2

1

如果你这样做:

MATCH path=(o:Order)-[:ORDERS]->(p:Product)-[:PART_OF]->(cate:Category) return path

您可以在循环中处理路径并将其解压缩。需要一些探索,但所有信息都在那里。

希望有帮助。

问候,汤姆

于 2018-05-31T08:08:43.760 回答
1

我在下面的代码中找到了解决此问题的方法,在该代码中,我将使用id()then uses将返回值更改为节点 ID GraphDatabaseService.getNodeByID(long)

String query = "MATCH (o:Order)-[:ORDERS]->(p:Product)-[:PART_OF]->(cate:Category) return id(o), id(p), id(cate)";

int nodeID = Integer.parseInt(column.getValue().toString()); Node node = db.getNodeById(nodeID);

于 2018-05-30T19:39:32.977 回答