这个问题是问题的后续问题here
我有一个带有循环链表的图。 (请参阅此处的示例) 链表中的每个节点都指向一个User。查询列表时,我必须使用路径语句,因为列表是循环的,并且我不想检索从 u:USER 节点开始的节点。为了获取感兴趣的节点,我的查询如下所示:
MATCH path=(nl:NODELINK { linkId:'cc' })-[:LINK*]->(u:USER)
RETURN nodes(path)
一旦我检索到路径,我想对该路径中的节点(NODELINK)进行进一步匹配,如下所示:
MATCH path=(nl:NODELINK { linkId:'cc' })-[:LINK*]->(u:USER)
WITH nodes(path) AS nodeLinks
MATCH nodeLinks-[:PERSONLINK]->persons
RETURN persons
但如果我尝试,我会收到错误:
Error: Type mismatch: nodeLinks already defined with conflicting type Collection<Node> (expected Node) (line 3, column 7)
"MATCH nodeLinks-[:PERSONLINK]->persons"
如何从路径中解压 NODELINK 类型的节点以便对它们进行进一步的 MATCH 查询?
试试这个......有点hacky,但在展开操作之前,它会起作用。
MATCH path=(nl:NODELINK { linkId:'cc' })-[:LINK*]->(u:USER)
WITH [x in nodes(path) | id(x)] AS nodeLinkIds
MATCH (n1:NODELINK)
WHERE id(n1) in nodeLinkIds // this does efficient id lookups for the nodes in the list
MATCH n1-[:PERSONLINK]->persons
RETURN persons
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)