Как в шифре вывести номер строки

#neo4j #cypher

#neo4j #шифр

Вопрос:

Учитывая такой запрос

 match (u:User)-[]-gt;(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"} │ └────────────┴─────────────────┴──────────────────┘  

Ответ №1:

Я придумал это:

 match (u:User)-[]-gt;(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"} │ └─────┴─────────────────┴──────────────────┘  

Комментарии:

1. Я думаю, что ваш короче =gt; лучше. Молодец 😉

Ответ №2:

Это должно сделать это:

 MATCH (n)-[]-gt;(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