路径查询如何返回路径上所有信息
发布于 19 天前 作者 liutianling 187 次浏览 来自 问答

我要查询这样的路径 match p=(n:Person{name:“甄姬”})-[r*2…2]-(m) return p 这是我的返回结果 (甄姬)<-[:None {}]-(刘备)-[:None {}]->(貂蝉) 这是我想要的结果 (甄姬)<-[:knows]-(刘备)-[:love]->(貂蝉)

也就是我希望路径上的关系也返回在结果中,查询语句该怎么写?

27 回复

你要解析p(在这里是路径的集合)中的每个关系

@graphway 谢谢,如果这样写也能返回我要的结果 match p=(n:Person{name:“甄姬”})-[r*2…2]-(m) return n,r,m 我不懂您说的解析是什么意思,是提取p中的信息吗,但是p中关系是None。。。

match p=(n:Person{name:“甄姬”})-[r*2…2]-(m) return p 这样P里面也包含节点和关系啊。都有

@bingo 讲道理p里面是包含有节点和关系的,我把查询结果打印出来 query1 = 'match p=(m:Person{name:“甄姬”})-[r:love]-(n) return p limit 10’ data = graph.run(query1).data() for path in data: print(path) 这里是打印的结果: {‘p’: (甄姬)-[:None {}]->(关羽)} {‘p’: (甄姬)<-[:None {}]-(刘备)} 我期望的结果是{‘p’: (甄姬)-[knows]->(关羽)}, 用路径返回的话不知道该怎么写了

你把这个cypher放到后台用cypher-shell 里面执行,你可以发现是返回了节点和关系的 至于你前端打印,估计是你python没有打印出来。

@bingo 谢谢你,可能是没有答应出来吧,我在web端查询的结果关系也是显示的没有内容{}

match p=(m:Person{name:“甄姬”})–(n) return p limit 10 ╒══════════════════════════════════════════════════════════════════════╕ │"p" │ ╞══════════════════════════════════════════════════════════════════════╡ │[{“add”:“苏州”,“name”:“甄姬”,“gender”:“female”,“age”:18},{},{“add”:“四川”,“n│ │ame”:“关羽”,“gender”:“male”,“age”:58}] │ ├──────────────────────────────────────────────────────────────────────┤ │[{“add”:“苏州”,“name”:“甄姬”,“gender”:“female”,“age”:18},{},{“add”:“四川”,“n│ │ame”:“刘备”,“gender”:“male”,“age”:38}] │ └──────────────────────────────────────────────────────────────────────┘

@liutianlin 这样return的时候可能只能返回节点和关系的属性吧?如果是要关系的类型,试试自己通过字符串拼接来打印吧

这样返回估计只返回节点和关系的属性,类型该怎么搞?

match p=(m:Person{name:“甄姬”})–[r]-(n) return p limit 10

楼主你的问题解决了吗,我也遇到了同样的问题,不过我在web端查询发现是有这些信息的,但是返回的就是None

@hitzhs 返回就是None的话应该是节点或者边的属性是空导致的吧?试试9楼那个type(rel)来返回边的属性,labels用来返回节点标签

@zhoujieren64 不是的,在web端是能看到属性和标签的,但是返回的就是None

@zhoujieren64 用type(rel)来返回边的属性是可以的,但是直接返回path就显示none,而且下午我发现这个返回none的不是全部,使部分,就是有的path里属性什么的都返回了,有的返回的none,现在还在找原因。。。

@hitzhs web端你看的是graph吧?切到Text这边返回的应该就是和shell执行结果一样的了

@hitzhs type只能返回relation的类型,不返回边的具体属性。 你说的这种情况我感觉是有些path里的边有property,有些边没有property shell里执行return path 通常是不显示节点labels和边的relation的,整个path是由节点和边的property构成的

@zhoujieren64 我看的是text,里面是有具体的数据的,包括那些返回none的部分,text里也是有数据的

@zhoujieren64 而且查询结果时好时坏,昨天后来不知道怎么的,返回的就不是none了,打算今天再看看情况,早上返回的又是none了。。。

@hitzhs o(╯□╰)o定位不到问题,可以的话贴一段结果上来?

@hitzhs 我上面贴的表格就是text的结果,关系部分就是空的,暂时没有弄了,要不你试试先返回路径p,然后再取p中关系看看

@zhoujieren64 传不了图。。这是py2neo的语句graph.run(‘MATCH (ee:Person)-[re:KNOWS]-(friends) RETURN ee, friends,re’).totable() ,现在返回的结果是正常的(_3491:Person {from: ‘Sweden’, klout: 99, name: ‘Emil’}), (_3493:Person {from: ‘Belgium’, name: ‘Ian’, title: ‘author’}) ,(Emil)-[:KNOWS {rating: 5}]->(Ian),不过有时返回的是这样的(_3491:Person {from: ‘Sweden’, klout: 99, name: ‘Emil’}), (_3493:Person {from: ‘Belgium’, name: ‘Ian’, title: ‘author’}) ,(Emil)-[:None {}]->(Ian),一样的代码,但是结果不一样。。。

@hitzhs直接返回ee,friends,type(re)这样返回是没有问题的,你可以试试 另外,我最开始的本意,是没有指定关系的,比如我就就是查询A到B之间的一度关系的所有路径,

@hitzhs 看不出啥问题,可能需要大佬来救场了o(╯□╰)o

@zhoujieren64 代码放在那里,我都没动过,昨天一天都返回的正常的,今天早上又是none了,真是醉了

@hitzhs 你现在是每天早上都会none么

@zhoujieren64 不一定,是个概率时间,今天就没问题,感觉出现none的频率越来越低了。。

@hitzhs 数据库跑起来先预热一下?不过估计没啥用哈哈

回到顶部