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 Cypher仅返回计数大于1的行_Neo4j_Cypher - Fatal编程技术网

Neo4j Cypher仅返回计数大于1的行

Neo4j Cypher仅返回计数大于1的行,neo4j,cypher,Neo4j,Cypher,首先,我看了和。他们都有相似的建议,但在我的情况下似乎不起作用(也许是因为我有放松条款?) 我的问题是: MATCH (a:MyNode)-[:SOME_RELATIONSHIP]->()<-[:SOME_RELATIONSHIP]-(b:MyNode {prop: 'value'}) WHERE a.prop<>'value' WITH collect(b) AS excluded MATCH (m:MyNode {prop: 'value'})

首先,我看了和。他们都有相似的建议,但在我的情况下似乎不起作用(也许是因为我有放松条款?)

我的问题是:

MATCH (a:MyNode)-[:SOME_RELATIONSHIP]->()<-[:SOME_RELATIONSHIP]-(b:MyNode {prop: 'value'})
    WHERE a.prop<>'value'
    WITH collect(b) AS excluded
MATCH (m:MyNode {prop: 'value'})
    WITH excluded, COLLECT(m) AS superset
    UNWIND [n IN superset WHERE NOT n IN excluded] AS t
    RETURN t.propTwo, COUNT(DISTINCT(t.propThree))
MATCH(a:MyNode)-[:SOME_RELATIONSHIP]->()1
返回t.propTwo,num

不幸的是,这不会返回任何记录。我发现这可能是因为t值在final WITH子句中一次取一个(因此COUNT(DISTINCT(t.propThree))始终为1),但我不知道如何克服这一点。

当您在Cypher中有一个聚合函数时,请将任何不属于聚合的部分看作SQL中group by的一部分。与按节点t分组不同,您似乎希望跨多个节点按属性t.propTwo的值分组

让我们构建一些示例数据

UNWIND RANGE(1,20) AS idNum
MERGE (n:MyNode {id:idNum})
SET 
   n.prop = case when n.id < 18 then 'value' else 'not value' end,
   n.propTwo = n.id / 3,
   n.propThree = n.id /4
RETURN n
你应该回去

propTwo     num
-------     ---
1           2 
2           2
5           2
propTwo     num
-------     ---
2           2
5           2

现在,我们让查询更为有趣,以检查模式
(m)-[:SOME_RELATIONSHIP]->()当您在Cypher中有一个聚合函数时,请将任何不属于聚合的内容看作SQL中group by的一部分。与按节点t分组不同,您似乎希望跨多个节点按属性t.propTwo的值分组

让我们构建一些示例数据

UNWIND RANGE(1,20) AS idNum
MERGE (n:MyNode {id:idNum})
SET 
   n.prop = case when n.id < 18 then 'value' else 'not value' end,
   n.propTwo = n.id / 3,
   n.propThree = n.id /4
RETURN n
你应该回去

propTwo     num
-------     ---
1           2 
2           2
5           2
propTwo     num
-------     ---
2           2
5           2

现在,我们让查询更有趣一些,以检查模式
(m)-[:SOME_RELATIONSHIP]->(),您是对的,我希望通过属性t.propTwo的值跨多个节点进行分组。事实上,你可以告诉我,我至少做了一些正确的事情。(我已经和Cypher一起工作了2天了。)不幸的是,你的两个查询都没有给我返回任何信息。第一个类似于我尝试的东西,我认为它遇到了与我尝试相同的问题。我还不确定第二个是什么;我将使用它,看看我能学到什么。我在第二个查询中的错误——我在将它从这里的泛型内容转换为实际模式时出错了。它工作得很好——感谢您的简化。对于一系列的注释很抱歉——第二个查询返回的结果太多了。它似乎包含了我在查询中明确排除的内容,因此它毕竟不能简化我的查询。不过,谢谢——我是通过玩它来学习的。很高兴它有帮助。让我们用英语讨论一下你们想要完成的事情,这可能对密码翻译有所帮助。是这样吗?我们从标签MyNode和属性prop等于“value”的节点集开始。下一步,我们将查找具有来自两个MyNode节点的传入链接的节点,其中一个MyNode具有prop“value”,另一个具有prop不等于“value”的属性。带有prop“value”的节点应该在我们的第一个集合中删除。从新的集合中,我们希望找到propTwo属性的值,其中存在多个不同的propThree.Great值。我的第一个答案没有正确过滤。我提供了一个可以更好地工作的编辑。您是对的,我希望通过属性t.propTwo的值跨多个节点进行分组。事实上,你可以告诉我,我至少做了一些正确的事情。(我已经和Cypher一起工作了2天了。)不幸的是,你的两个查询都没有给我返回任何信息。第一个类似于我尝试的东西,我认为它遇到了与我尝试相同的问题。我还不确定第二个是什么;我将使用它,看看我能学到什么。我在第二个查询中的错误——我在将它从这里的泛型内容转换为实际模式时出错了。它工作得很好——感谢您的简化。对于一系列的注释很抱歉——第二个查询返回的结果太多了。它似乎包含了我在查询中明确排除的内容,因此它毕竟不能简化我的查询。不过,谢谢——我是通过玩它来学习的。很高兴它有帮助。让我们用英语讨论一下你们想要完成的事情,这可能对密码翻译有所帮助。是这样吗?我们从标签MyNode和属性prop等于“value”的节点集开始。下一步,我们将查找具有来自两个MyNode节点的传入链接的节点,其中一个MyNode具有prop“value”,另一个具有prop不等于“value”的属性。带有prop“value”的节点应该在我们的第一个集合中删除。从新的集合中,我们希望找到propTwo属性的值,其中存在多个不同的propThree.Great值。我的第一个答案没有正确过滤。我提供了一个可以更好工作的编辑。
propTwo     num
-------     ---
2           2
5           2