小编Lun*_*erg的帖子

Cypher COLLECT 使 UNWIND 以错误的顺序展开

图要点:http://gist.neo4j.org/?6182d024325343760cb4

我想按顺序获得一条(最长的)路径,并且它会按预期工作,直到我添加 COLLECT 语句,是否有关于 Cypher 和 COLLECT 的内容我不明白,或者这是一个错误?

此查询按预期工作,以正确的顺序返回路径中的节点:

MATCH (n:Cable { name: 'Cable3' })-[:Connected_to*]-(port:Port)
OPTIONAL MATCH path=(port)-[:Connected_to*]-()
WITH nodes(path) AS parts, length(path) AS len
ORDER BY len DESC 
LIMIT 1 UNWIND parts AS part
RETURN part
Run Code Online (Sandbox Code Playgroud)

这个没有 COLLECT 语句,会按正确的顺序返回节点,还会返回部件和父级之间的节点(如预期)。

MATCH (n:Cable { name: 'Cable3' })-[:Connected_to*]-(port:Port)
OPTIONAL MATCH path=(port)-[:Connected_to*]-()
WITH nodes(path) AS parts, length(path) AS len
ORDER BY len DESC
LIMIT 1 UNWIND parts AS part
OPTIONAL MATCH (part)<-[:Has*1..10]-(parent)
RETURN part, parent
Run Code Online (Sandbox Code Playgroud)

此查询未按预期工作,以另一种顺序返回路径中的节点:

MATCH (n:Cable { name: 'Cable3' })-[:Connected_to*]-(port:Port) …
Run Code Online (Sandbox Code Playgroud)

collect neo4j longest-path cypher

4
推荐指数
1
解决办法
2311
查看次数

标签 统计

collect ×1

cypher ×1

longest-path ×1

neo4j ×1