Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j Cypher:返回集合中节点之间的所有关系_Neo4j_Cypher - Fatal编程技术网

Neo4j Cypher:返回集合中节点之间的所有关系

Neo4j Cypher:返回集合中节点之间的所有关系,neo4j,cypher,Neo4j,Cypher,我只是想让Cypher输出集合中节点之间或匹配节点之间的所有关系 我已经读过几个解决这个问题的方法,但是没有一个对我有效 MATCH (p:Paper {paper_id: '29912657'}) CALL algo.pageRank.stream(null, null, {direction: "BOTH", sourceNodes: [p]}) YIELD nodeId, score WITH p, nodeId, score ORDER BY score DESC LIMIT 25

我只是想让Cypher输出集合中节点之间或匹配节点之间的所有关系

我已经读过几个解决这个问题的方法,但是没有一个对我有效

MATCH (p:Paper {paper_id: '29912657'})
CALL algo.pageRank.stream(null, null, {direction: "BOTH", 
sourceNodes: [p]})
YIELD nodeId, score
WITH p, nodeId, score ORDER BY score DESC
LIMIT 25

MATCH (n)
WHERE id(n) = nodeId
WITH n, score, collect(n) AS c
MATCH (n)-[r:Cites]->(m)
WHERE m in c
RETURN r
在第一段代码中,我在具有特定“paper_id”属性的节点上运行个性化页面排名。然后,我按分数排序结果,取前25名的结果

我尝试了第二个代码块的许多变体,但都没有成功。我正在尝试
匹配
集合
c
中节点之间存在的所有关系,并
返回它们。当我运行这个时,我得到一个空的响应。我怀疑
匹配(n)-[r:Cites]->(m)
行有问题,因为如果我尝试
返回
其他变量,例如
n
,我仍然会得到一个空响应。删除该行并返回
ing
n
将产生除查询节点
p
之外的前24个评分节点

如果我尝试
OPTIONAL MATCH
而不是
MATCH
我会得到一个包含25个
null
值的列表

我使用的是Neo4j版本3.4.5


感谢您的帮助

您的想法是正确的,收集并匹配到集合中的节点,但是您遇到了聚合问题

聚合时,非聚合变量成为分组键,即聚合的上下文

看看这一行:

带n,得分,收集(n)作为c

这要求的是,根据每个
n
score
,给我一个
n
的集合。每个
n
将有一行,每个集合都是该
n
的单个集合

为了拥有完整的节点集合,同时保留每行的单个节点,您需要先收集节点,然后将其放回到行(我们可以在这里省略分数,因为您在查询的第二部分中从未使用过它)

... // since you already have the nodes you want no need to re-match to them
WITH collect(p) as nodes
UNWIND nodes as p  // let's just keep the variable consistent here
// we now have each `p` and the full collection of nodes
MATCH (p)-[r:Cites]->(m)
WHERE m in nodes
RETURN r

很好,谢谢你的帮助。我没有意识到我在聚合中犯的错误,这就清除了它。