фильтрация отфильтрованного результата запроса Cypher

Привет, вот мой текущий запрос, который я хотел бы «повторно отфильтровать»:

START movie = node(*)
MATCH user-[:LIKE]->category-[:SIMILAR*0..3]-()<-[:TAGGED]->movie
WHERE user.name = "current_user"

WITH DISTINCT movie, user, category

RETURN user.name, category.name, ID(movie), movie.name
ORDER BY movie.name;

http://console.neo4j.org/r/u19iim

Вот как это выглядит после текущего запроса:

+--------------+----------------+-----------+-------------------------+
| user.name    | category.name  | ID(movie) | movie.name              |
+--------------+----------------+-----------+-------------------------+
| current_user | c              | 14        | movie_c_and_d_and_e     |
| current_user | d              | 14        | movie_c_and_d_and_e     |
| current_user | e              | 14        | movie_c_and_d_and_e     |
| current_user | a              | 9         | movie_of_a_and_b_and_b1 |
| current_user | b              | 9         | movie_of_a_and_b_and_b1 |
| current_user | b              | 10        | movie_of_b2_first       |
| current_user | b              | 11        | movie_of_b2_second      |
| current_user | c              | 12        | movie_of_c              |
| current_user | d              | 13        | movie_of_d_and_e        |
| current_user | e              | 13        | movie_of_d_and_e        |
+--------------+----------------+-----------+-------------------------+

Я хотел бы GROUP BY COUNT(sugg) AS category_count извлечь это:

+--------------+----------------+-----------+-------------------------+
| user.name    | category_count | ID(movie) | movie.name              |
+--------------+----------------+-----------+-------------------------+
| current_user | 3              | 14        | movie_c_and_d_and_e     |
| current_user | 2              | 9         | movie_of_a_and_b_and_b1 |
| current_user | 2              | 13        | movie_of_d_and_e        |
| current_user | 1              | 10        | movie_of_b2_first       |
| current_user | 1              | 11        | movie_of_b2_second      |
| current_user | 1              | 12        | movie_of_c              |
+--------------+----------------+-----------+-------------------------+

Как я могу это сделать?

Похожие вопросы: - как иметь две агрегации в шифрованном запросе в нео4дж?

Обновление
Вот рабочий результат (с демонстрацией: http://tinyurl.com/cywlycc ):

START movie = node(*)
MATCH user-[:LIKE]->category-[:SIMILAR*0..3]-()<-[:TAGGED]->movie
WHERE user.name = "current_user"
WITH DISTINCT movie, category WITH COUNT(movie) AS category_count, movie, collect(category.name) as categorized
RETURN category_count, ID(movie), movie.name, categorized
ORDER BY category_count DESC;

person Adit Saxena    schedule 15.02.2013    source источник


Ответы (1)


START movie = node(*) 
MATCH user-[:LIKE]->category-[:SIMILAR*0..3]-()<-[:TAGGED]->movie 
WHERE user.name = "current_user" 
WITH DISTINCT movie, user, category 
RETURN user.name, count(category.name) as category_count, ID(movie), movie.name 
ORDER BY category_count desc, movie.name asc

http://console.neo4j.org/r/69rfkn

person Werner Kvalem Vesterås    schedule 15.02.2013
comment
Ваше решение работает и отвечает на мой вопрос, мой запрос был немного сложнее, чем то, что я представил. Я обнаружил, что можно размещать последовательные операторы WITH, например следующее: START movie = node(*) MATCH user-[:LIKE]- ›category-[:SIMILAR*0..3]-()‹-[:TAGGED]-›movie ГДЕ user.name = current_user С ОТЛИЧНЫМ фильмом, категорией WITH COUNT(фильм) КАК category_count, movie, collect(category.name ) как категоризированный RETURN category_count, ID(movie), movie.name, категоризированный ORDER BY category_count DESC; Таким образом, я могу эффективно «перефильтровать» свои результаты. Благодарю вас! tinyurl.com/cywlycc - person Adit Saxena; 16.02.2013
comment
да, это то, для чего предназначен with, и вы также можете применить порядок и лимит на with и агрегировать, а затем отфильтровать агрегаты позже. Возможно, поместите обновленный запрос в свой вопрос, чтобы он был лучше отформатирован и читаем. - person Michael Hunger; 20.02.2013