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 - Fatal编程技术网

neo4j:仅在节跃点上标记参数?

neo4j:仅在节跃点上标记参数?,neo4j,Neo4j,有没有办法将标签类型限制在模式的无限跃点区域内?您将如何在更大的模式中实现这一点 WITH n, end OPTIONAL MATCH (n:Label1)<-[:REL2]-(a:Label2)-[:CONSTRICT_HOPS_TO_LABEL*..]->(b)<-[:REL3]-(:Label3)->(end:Label1) WITH b, ... continue 带n,结束 可选匹配(n:Label1)(b)(结束:Label1) 有了b。。。持续 我希望a

有没有办法将标签类型限制在模式的无限跃点区域内?您将如何在更大的模式中实现这一点

WITH n, end
OPTIONAL MATCH (n:Label1)<-[:REL2]-(a:Label2)-[:CONSTRICT_HOPS_TO_LABEL*..]->(b)<-[:REL3]-(:Label3)->(end:Label1)
WITH b, ... continue
带n,结束
可选匹配(n:Label1)(b)(结束:Label1)
有了b。。。持续
我希望a和b之间的部分只包括某个标签的节点

WITH n, end
 OPTIONAL MATCH (n:Label1)<-[:REL2]-(a:Label2)-[:CONSTRICT_HOPS_TO_LABEL*..]->(b)<-[:REL3]-(:Label3)->(end:Label1), 
p=(a)-[:CONSTRICT_REL_LABEL*..]->(b) WHERE nodes(p):Label
WITH b, ... continue
带n,结束
可选匹配(n:Label1)(b)(结束:Label1),
p=(a)-[:construct_REL_LABEL*。]->(b)其中节点(p):LABEL
有了b。。。持续
有办法做到这一点吗

   WITH n, end
    OPTIONAL MATCH (n:Label1)<-[:REL2]-(a:Label2)-[:CONSTRICT_HOPS_TO_LABEL*..]->(b)<-[:REL3]-(:Label3)->(end:Label1), 
    p=(a)-[:CONSTRICT_REL_LABEL*..]->(b) 
   WHERE ALL(node IN nodes(p) WHERE node:Label)
   WITH b, ...continue
带n,结束
可选匹配(n:Label1)(b)(结束:Label1),
p=(a)-[:压缩相关标签*。]->(b)
WHERE ALL(节点中的节点(p),其中节点:标签)
有了b,…继续
由于
节点(路径)
是一个节点列表,因此您可以使用索引访问获取路径中节点的相关切片,并将其用于过滤:

...
WITH n, end
OPTIONAL MATCH path = (n:Label1)<-[:REL2]-(a:Label2)-[:CONSTRICT_HOPS_TO_LABEL*..]->(b)<-[:REL3]-(c:Label3)-[:REL4]->(end:Label1), 
WHERE ALL(node IN nodes(path)[2..-3] WHERE node:Label)
WITH b, ...
...
。。。
用n,结束
可选匹配路径=(n:Label1)(b)(结束:Label1),
WHERE ALL(节点中的节点(路径)[2..-3]其中节点:标签)
有了b。。。
...
节点(路径)[0..2]
[n,a]
,因此如果您希望节点超过
a
(但不包括
a
本身),您可以从2开始

负索引是列表末尾的元素,因此
-3
意味着它将排除列表的最后3个元素,包括
[b,c,end]


如果您想包括
a
以及
b
,那么您的切片将是
节点(路径)[1..-2]

只需注意,找到路径后,标签检查将是一个过滤操作,在路径扩展期间不会检查它。重新构造和依赖rel.property检查会更快吗?例如[rel:construct_HOPS_TO_LABEL*。]rel.boolean在哪里?或者这有什么意义[:construct_HOPS_TO_LABEL*0..1]-(:LABEL)-[:construct_HOPS_TO_LABEL*0..1]-(:LABEL)-[:construct_HOPS_TO_LABEL*0..1]对不起-我在这里进行头脑风暴。。。谢谢这是行不通的;o(过滤为查询增加了荒谬的时间。看起来我需要完全用不同的关系类型重新构造,以使其可行。。。