получить путь после запроса neo4j Java - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь сделать запрос, чтобы найти все возможные пути, соответствующие шаблону "(Заказ) - [ЗАКАЗЫ] -> (Продукт) - [PART_OF] -> (Категория)" и хотел бы получитьвесь путь (т. е. все 3 узла и 2 отношения как соответствующие им классы).

Метод, который я использовал ниже, позволил мне получить только 1 столбец данных (количество заказов: 2155).Если бы я попробовал это еще раз (2-й цикл 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();
    }

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Если вы сделаете это:

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

Вы можете обработать путь в цикле и распаковать его.Требуется немного изучить, но вся информация там.

Надеюсь, что помогает.

С уважением, Том

0 голосов
/ 30 мая 2018

Я нашел способ обойти это в приведенном ниже коде, где я бы изменил возвращаемое значение на идентификатор узла, используя 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);

...