【问题标题】:How in Cypher do I output a row number如何在 Cypher 中输出行号
【发布时间】:2021-12-04 12:36:00
【问题描述】:

给定这样的查询

match (u:User)-[]->(p:Project) return 'x' as row_number, u, p

如何输出这样的结果集,其中 row_number 为行号?

╒════════════╤═════════════════╤══════════════════╕
│"row_number"│"u"              │"p"               │
╞════════════╪═════════════════╪══════════════════╡
│"x"         │{"name":"Martin"}│{"name":"Martin2"}│
├────────────┼─────────────────┼──────────────────┤
│"x"         │{"name":"Martin"}│{"name":"Martin1"}│
├────────────┼─────────────────┼──────────────────┤
│"x"         │{"name":"Bob"}   │{"name":"Bob2"}   │
├────────────┼─────────────────┼──────────────────┤
│"x"         │{"name":"Bob"}   │{"name":"Bob1"}   │
└────────────┴─────────────────┴──────────────────┘

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    我想出了这个:

    match (u:User)-[]->(p:Project) 
    with collect([u,p]) as col 
    unwind range(0, size(col)-1) as un 
    return un as row, col[un][0] as User, col[un][1] as Project
    

    哪些输出:

    ╒═════╤═════════════════╤══════════════════╕
    │"row"│"User"           │"Project"         │
    ╞═════╪═════════════════╪══════════════════╡
    │0    │{"name":"Martin"}│{"name":"Martin2"}│
    ├─────┼─────────────────┼──────────────────┤
    │1    │{"name":"Martin"}│{"name":"Martin1"}│
    ├─────┼─────────────────┼──────────────────┤
    │2    │{"name":"Bob"}   │{"name":"Bob2"}   │
    ├─────┼─────────────────┼──────────────────┤
    │3    │{"name":"Bob"}   │{"name":"Bob1"}   │
    └─────┴─────────────────┴──────────────────┘
    

    【讨论】:

    • 我认为你的更短 => 更好。干得好;)
    【解决方案2】:

    应该这样做:

    MATCH (n)-[]->(m)
    WITH COLLECT([n,m]) AS rows
    WITH REDUCE(arr=[], i IN RANGE(0,SIZE(rows)-1) |
                arr
                +[[i]+rows[i]]
         ) AS rowsWithNumber
    UNWIND rowsWithNumber As rowWithNumber
    RETURN rowWithNumber[0] AS row_number,
           rowWithNumber[1] AS n,
           rowWithNumber[2] AS m
    

    【讨论】:

      猜你喜欢
      • 2010-12-21
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多