【问题标题】:Show all outgoing relationships with cypher for nodes that have more than 1 relationship使用密码显示具有超过 1 个关系的节点的所有传出关系
【发布时间】:2018-09-21 19:34:09
【问题描述】:

我目前有一个图形数据库,它有 2 个节点标签和 1 个关系类型。

如果我跑了

MATCH (u)-[r]->(n) return u, n

我可以看到一切。一些节点有多个传出关系。我想过滤此视图以查找节点具有 2 个或更多传出关系的位置。我试过了

MATCH (u)-[r]->(n) with count(r) as c,u,n  where c > 1 return u, n

但这没有给我任何结果。我在这里看到了一些只返回一个节点的答案,但我想要两个节点和显示的关系。有什么想法吗?

【问题讨论】:

    标签: neo4j cypher relationship


    【解决方案1】:

    [编辑]

    这应该可行:

    MATCH (u)-->(n)
    WITH u, COLLECT(n) AS ns
    WHERE SIZE(ns) > 1
    RETURN u, ns
    

    如果您使用aggregating function 指定一组“分组键”,例如COLLECT()(在上面的查询中,u 是唯一的分组键),那么聚合是在该组键上执行的。

    因此,在上述查询中,COLLECT(n) 正在为同一 u 节点收集所有 n 节点。

    【讨论】:

    • 谢谢,但是我收到以下错误,我猜这是由于 where 语句中的逗号?
    • Neo.ClientError.Statement.SyntaxError: Invalid input ',': 需要标识符字符、空格、'{'、节点标签、属性映射、关系模式、'.'、'( ', '[', "=~", IN, STARTS, ENDS, CONTAINS, IS, '^', '', '/', '%', '+', '-', '=' , "", "!=", '', "=", AND, XOR, OR, LOAD CSV, FROM, INTO, START, MATCH, UNWIND, MERGE, CREATE GRAPH >>、CREATE >> GRAPH、CREATE GRAPH、CREATE、SET、DELETE GRAPHS、DELETE、REMOVE、FOREACH、WITH、CALL、PERSIST、RELOCATE、RETURN、SNAPSHOT、UNION、';' 或输入结束(第 2 行,第 8 列(偏移量:23))“WHERE u, COUNT() > 1”
    • 我应该在发送之前进行测试。我的答案已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多