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

如何避免在neo4j中多次访问具有相同属性的节点?

如何避免在neo4j中多次访问具有相同属性的节点?,neo4j,cypher,py2neo,anormcypher,Neo4j,Cypher,Py2neo,Anormcypher,我的密码查询: MATCH p =(o:Order)-[r:seeks*2..8]->(o:Order) WHERE o.Name="000093" AND ALL(x IN tail(nodes(p)) WHERE SINGLE(y IN tail(nodes(p)) WHERE x=y)) RETURN extract(n IN nodes(p)| n.Name) AS OrderID, extract(u IN nodes(p)| u.UserName) AS UserName

我的密码查询:

MATCH p =(o:Order)-[r:seeks*2..8]->(o:Order)
WHERE o.Name="000093" AND ALL(x IN tail(nodes(p)) WHERE SINGLE(y IN    tail(nodes(p)) WHERE x=y))
RETURN extract(n IN nodes(p)| n.Name) AS OrderID, extract(u IN nodes(p)| u.UserName) AS UserName,length(p), endNode(r[0])
ORDER BY length(p)
我想避免路径中具有相同属性值的节点,如何避免它们

["000093","000090","000096","000097","000107","000091","000089","000093"]
["yunis","gio","Anhar","Jhon","**shakilbit**","xalima","**shakilbit**","yunis"]
所以,订单0000107和000089是由同一个用户名shakilbit下的,我有没有办法避免在同一路径下有这样的订单,谢谢!NEO4J。。据我所知,这对社区非常有帮助。

使用,您可能希望将集合作为一个集合(消除重复值)并比较大小。如果存在重复项,则集合的大小将更小

MATCH p =(o:Order)-[r:seeks*2..8]->(o:Order)
WHERE o.Name="000093" AND ALL(x IN tail(nodes(p)) WHERE SINGLE(y IN    tail(nodes(p)) WHERE x=y))
WITH p, o, r, extract(u IN nodes(p)| u.UserName) AS UserName
// need to make some adjustments since first and last nodes are same
WHERE size(UserName) - 1 = size(apoc.coll.toSet(tail(UserName)))
RETURN extract(n IN nodes(p)| n.Name) AS OrderID, UserName, length(p), endNode(r[0])
ORDER BY length(p)

另一种方法是在UserName集合上重复
ALL(尾部的x…)WHERE single()…
谓词(或者在现有的ALL()谓词中包含此检查,尽管这可能会很昂贵)。您可能需要对每个配置文件进行分析,看看哪个性能更好。

谢谢,伙计!但是我遇到了“未知函数'apoc.coll.toSet'”的问题,仅供参考,我想消除出现同一用户的两个订单的这种路径!我忘了链接到APOC程序,现在添加链接。您需要滚动到顶部,找到与您的Neo4j版本匹配的最新版本的链接(因此,如果您使用的是Neo4j 3.1.x,则需要APOC 3.1.x版,而不是3.0.x版)。要安装,您需要将APOC jar添加到您的插件文件夹中。我想Neo4j 3.1.0和APOC 3.1.0.3之间存在兼容性问题,因为Stackoverflow的另一位用户向我提出了这个问题,据我所知,这个问题专门与CSV导入/导出过程有关。看起来你不是在用这些。collection helper函数应该可以正常工作。我仍然有错误“未知函数'apoc.coll.toSet'”,我已经下载了最新版本并复制到我的插件文件夹,我停止了我的neo4j服务器并重新启动,但仍然没有,无论如何,谢谢。