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,我有一个包含多个标签的路径,如Shipped、Received、Ready to Shipper节点标签。我想知道某个路径是否多次出现节点标签。它们可能不正常 (Shipped)-[:NEXT]->()-[:NEXT]->()-[:NEXT]-(:ReadyToShip)-[:NEXT]-()-[:NEXT]-(:ReadyToShip)-[:NEXT]-(:Received) 我有很多路径,但我想找到所有出现了两个或更多ReadyShip节点标签的路径,如上面的一个。我该怎么做?

我有一个包含多个标签的路径,如Shipped、Received、Ready to Shipper节点标签。我想知道某个路径是否多次出现节点标签。它们可能不正常

(Shipped)-[:NEXT]->()-[:NEXT]->()-[:NEXT]-(:ReadyToShip)-[:NEXT]-()-[:NEXT]-(:ReadyToShip)-[:NEXT]-(:Received)
我有很多路径,但我想找到所有出现了两个或更多ReadyShip节点标签的路径,如上面的一个。我该怎么做?我可以使用以下方法提取2种类型节点之间的所有可能路径:

match path=(s:Shipped)-[:NEXT*]->(m:Received) return distinct extract(p in nodes(path) | labels(p))
但我得把它提取出来,自己过滤。我怎样才能在Cypher中做到这一点

[更新]

此查询应返回至少有2个
ReadyToShip
节点的每个路径,以及该路径中
ReadyToShip
节点的数量:

MATCH p=(s:Shipped)-[:NEXT*]->(:ReadyToShip)-[:NEXT*]->(:ReadyToShip)-[:NEXT*]->(m:Received)
RETURN
  p,
  REDUCE(s = 0, n IN NODES(p) | CASE WHEN 'ReadyToShip' IN LABELS(n) THEN s + 1 ELSE s END) AS num;

是的,我使用了一个类似的查询,但是如果我不知道ReadyShip节点重复了多少次呢?查询应该找到至少有2个
ReadyShip
节点的所有路径。这很有帮助。是否也有方法计算ReadyToShip节点的数量?对于路径1中的2个节点,与路径2中的3个节点相比。您是否安装了APOC程序,或者能够安装APOC程序?这里有一些在集合中查找多次出现的值的功能,这些功能可能会有所帮助。@InverseFalcon:是的,我确实安装了apoc过程。@InverseFalcon我尝试了apoc.coll.instances,并获得了一些结果。你知道我是否可以使用多个值作为第二个参数吗?很遗憾,你不能。您可能希望查看
apoc.coll.duplicatesWithCount()
,并只过滤到感兴趣的值