在查找路径时获取 py2neo 中节点的字母数字引用

Getting alphanumeric reference of nodes in py2neo, when looking for paths

我有一个由 DATASET 和 GRAPH 节点组成的图。具有以下关系:

DATASET->READS->GRAPH

GRAPH->WRITES->DATASET

当我运行以下内容时:MATCH (p1:DATASET_NAME { name:'test1.dat' }),(p3:DATASET_NAME { name:'test32.txt' }), p = ((p1)-[:READS|:WRITES*1..8]->(p3)) RETURN p

在 Neo4J Desktop 中,我得到了一个正确的结果,其中存在节点名称。但是当我在 py2neo 中 运行 它时:

graph.run("MATCH (p1:DATASET_NAME { 
name:'test1.dat' }),(p3:DATASET_NAME { name:'test32.txt' }), p = ((p1)-[:READS|:WRITES*1..8]->(p3)) RETURN p").dump()

我得到以下格式的结果:

(f3ff862)-[:READS]->(c539bdc)-[:WRITES]->(b217f5a)-[:READS]->(ebf9c4f)-[:WRITES]-> (f9ddd22)-[:READS]->(fcca016)-[:WRITES]->(a9c241a)<br> (f3ff862)-[:READS]->(c539bdc)-[:WRITES]->(b217f5a)-[:READS]->(ebf9c4f)-[:WRITES]->(f9ddd22)-[:READS]-> (fcca016)-[:WRITES]->(e152f69)-[:READS]->(fcca016)-[:WRITES]->(a9c241a) (f3ff862)-[:READS]->(c539bdc)-[:WRITES]->(b217f5a)-[:READS]->(ebf9c4f)-[:WRITES]->(cbc5d42)-[:READS]-> (fcca016)-[:WRITES]->(a9c241a)

我假设这些是某种参考。有没有办法从这些引用中获取 name 的字符串值?

您正在返回匹配的路径,因此您在 py2neo 中看到的是路径对象的表示。在 neo4j 控制台中,它会为您做一些额外的查找,并将路径显示为一组节点和关系,并根据您在控制台中配置的内容对其进行标记。

如果您想在 py2neo 输出中查看名称,您可以在返回的路径 p 上使用 reduce 函数来生成包含节点名称和关系类型的字符串。这样的事情应该让你开始。

MATCH (p1:DATASET_NAME { name:'test1.dat' }),(p3:DATASET_NAME { name:'test32.txt' }), p = ((p1)-[:READS|:WRITES*1..8]->(p3))
RETURN head(nodes(p)).name + ' - ' + reduce(path_str = "", r in relationships(p) | path_str + type(r) + ' - ' + endnode(r).name)

在py2neo中[注意为避免密码错误而添加的转义字符。 @...reduce(path_str = \"\"...]:

graph.run("MATCH (p1:DATASET_NAME { name:'/projects/bkrpty_vfcn/bkrpty_vfcn_vendr/data/serial/temp/yyyymmdd_yyyymmddhhmiss_bk_mrk_stat_init.dat' }),(p3:DATASET_NAME { name:'/projects/bkrpty_vfcn/bkrpty_vfcn_vendr/tables/onevgb1/ai_bkrpty_case' }), p = ((p1)-[:READS|:WRITES*1..8]->(p3)) RETURN head(nodes(p)).name + ' - ' + reduce(path_str = \"\", r in relationships(p) | path_str + type(r) + ' - ' + endnode(r).name)").dump()