我如何在 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
给出这样的查询
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