Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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,我正在使用一个图形数据库来建立文件夹、其子文件夹和用户(无论是文件夹的所有者还是共享者)之间的关系 这是我的结构的一个例子。其中橙色为文件夹,蓝色为用户。- 我希望查询实现的目标:它应该返回查询下文件夹的直接子文件夹,并在执行此操作时确定返回的子文件夹是否正在共享 我的查询 MATCH (:Folder { name: 'Nick Hamill' })-[:CHILD]->(children:Folder) WITH children OPTIONAL MATCH path = (c

我正在使用一个图形数据库来建立文件夹、其子文件夹和用户(无论是文件夹的所有者还是共享者)之间的关系

这是我的结构的一个例子。其中橙色为文件夹,蓝色为用户。-

我希望查询实现的目标:它应该返回查询下文件夹的直接子文件夹,并在执行此操作时确定返回的子文件夹是否正在共享

我的查询

MATCH (:Folder { name: 'Nick Hamill' })-[:CHILD]->(children:Folder)

WITH children

OPTIONAL MATCH path = (children)<-[*]-(:User)

UNWIND RELATIONSHIPS(path) AS r WITH children, r

WHERE TYPE(r) = 'SHARES'

RETURN children AS model, COUNT(r) > 0 AS shared
查询应该是相对自解释的,但为了清楚起见,这里有一些预期输出-

| Query Folder         | Returned Folder  | Shared? |
|----------------------|------------------|---------|
| Miss Dessie Oritz II | Nick Hamill      | TRUE    |
| Nick Hamill          | Dr Denis Abshire | TRUE    |
| Samara Russell       | Shemar Huels PhD | FALSE   |
| Shemar Huels PhD     | Hazle Ward       | FALSE   |
我正在运行neo4j 3.5.11社区版。我觉得这应该是一个相当简单的解决方案,我只是满足了我极其有限的密码知识的极限


谢谢你的帮助

我不了解您在查询中使用此选项的原因:

OPTIONAL MATCH path = (children)<-[*]-(:User)
UNWIND RELATIONSHIPS(path) AS r WITH children, r
WHERE TYPE(r) = 'SHARES'

您应该告诉我们您正在使用的语言版本,并在提供的示例中提供一些预期结果的示例database@Sterconium-谢谢,我添加了一个示例结果,versionI看到了,但是其他文件夹呢?它应该以什么回报,说“萨马拉·拉塞尔”?嗨,罗吉西玛,再次感谢你的帮助。我之所以增加了“展开”等的复杂性,是因为Nick Hamill与用户共享,而Denis Abshire博士是Nick Hamill的孩子,Denis Abshire博士应该标记为共享文件夹。但是,对于上面的查询,这不会遍历链并确定它是共享的。我不知道是否有其他方法可以做到这一点?我已经更新了我的回复。你能测试最后一个查询吗?再完美一次!我不知道您可以对关系节点使用
*0..
。非常感谢你!
OPTIONAL MATCH path = (children)<-[*]-(:User)
UNWIND RELATIONSHIPS(path) AS r WITH children, r
WHERE TYPE(r) = 'SHARES'
MATCH (:Folder { name: 'Nick Hamill' })-[:CHILD]->(children:Folder)
RETURN children AS model, size((children)<-[:CHILD*0..]-(:Folder)<-[:SHARES]-(:User)) > 0 AS shared