2013-06-14 5 views
0

У меня есть простой случай использования, но до сих пор не могу найти решение ....
У меня есть Вопросов узлов каждый вопрос имеет категорию, каждая категория может иметь много вопросов. Я хочу сделать следующее:Cypher запрос DISTINCT

получить 5 вопросов, где каждый из них из разных категорий.

попробовал следующее, но это не то, что я ищу, потому что у меня все еще есть вопросы из той же категории.

START question=node:__types__(className = "com.socialist.server.graph.entities.Question") 
RETURN distinct(question.category), question 
LIMIT 5 

Каков правильный запрос для этого прецедента? Ваш ответ очень приветствуется.

+0

Как вы определили тот факт, что каждый вопрос имеет категорию? По вашему запросу, похоже, эта категория является свойством вопроса. Разве не было бы смысла вводить узлы для категорий? –

+0

Привет, спасибо за комментарий ... скажем, у меня есть узлы категории: вопрос - [: RELATE] -> категория, как это поможет достичь того, что я хочу? –

ответ

1

Нечто подобное могло бы работать, но если у вас есть много в каждой категории не будет лучшей эффективностью:

START question=node:__types__(className = "com.socialist.server.graph.entities.Question") 
RETURN question.category, head(collect(question)) 
LIMIT 5 

Кроме того, в ближайшее время (надеюсь, по версии 2.0) будет хорошим способом получить случайный предмет из коллекции, что-то вроде этого:

START question=node:__types__(className = "com.socialist.server.graph.entities.Question") 
WITH question.category as category, collect(question) as questions 
RETURN category, questions[rand() * length(questions)] 
LIMIT 5 
Смежные вопросы