我如何在 Cypher 中输出行号

How in Cypher do I output a row number

给出这样的查询

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"}   │
└────────────┴─────────────────┴──────────────────┘

我想到了这个:

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"}   │
└─────┴─────────────────┴──────────────────┘

应该这样做:

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