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 连接前投影_Neo4j_Cypher - Fatal编程技术网

Neo4j 连接前投影

Neo4j 连接前投影,neo4j,cypher,Neo4j,Cypher,是否可以在连接之前使用cypher强制投影 在下面的示例中,假设电影“m”由255名演员主演,我预计点击率约为255 db。然而,该计划决定在投影之前进行NodeHashJoin,从而产生超过2*2552 db的点击率 MATCH(actorA)-->(m:Movie{name:“m”})看起来您需要电影中所有演员的叉积中的演员对,然后在id上使用一个不等式来防止在相同的演员对上进行匹配。我们有几种方法可以改进这一点 根据您目前的计划,您将两次扩展到电影中的演员,一次为actorA,另一次为ac

是否可以在连接之前使用cypher强制投影

在下面的示例中,假设电影“m”由255名演员主演,我预计点击率约为255 db。然而,该计划决定在投影之前进行NodeHashJoin,从而产生超过2*2552 db的点击率


MATCH(actorA)-->(m:Movie{name:“m”})看起来您需要电影中所有演员的叉积中的演员对,然后在id上使用一个不等式来防止在相同的演员对上进行匹配。我们有几种方法可以改进这一点

根据您目前的计划,您将两次扩展到电影中的演员,一次为actorA,另一次为actorB。我们可以将其更改为仅扩展到参与者一次,将它们放入集合(使用模式理解),并通过两次展开集合,然后执行过滤来获得所需的叉积

此外,我们可以基于neo4j内部id进行过滤,而不是依赖于按属性id进行过滤(这需要属性访问)

试试这个:

WITH [(actor)-->(:Movie {name:"m"}) | actor] as actors
UNWIND actors as actorA
UNWIND actors as actorB
WITH actorA, actorB
WHERE id(actorA) < id(actorB)
RETURN actorA.id AS aid, actorB.id AS bid
以[(演员)-->(:Movie{name:“m”)作为演员
以actorA的身份释放演员
作为actorB释放演员
与阿克托拉,阿克托布
其中id(actorA)
如果要在展开之前强制投影id,可以从一开始就执行此操作,其余部分只需使用id属性而不是节点:

WITH [(actor)-->(:Movie {name:"m"}) | actor.id] as actors
UNWIND actors as aid
UNWIND actors as bid
WITH aid, bid
WHERE aid < bid
RETURN aid, bid
以[(actor)-->(:Movie{name:“m})|actor.id]作为演员
作为援助放松演员
将演员作为出价展开
借助援助,出价
在哪里投标
回赠
WITH [(actor)-->(:Movie {name:"m"}) | actor.id] as actors
UNWIND actors as aid
UNWIND actors as bid
WITH aid, bid
WHERE aid < bid
RETURN aid, bid