Я хочу создать базу данных, где: Человек может оценивать: Фильм по критерию. Я хочу, чтобы критические характеристики были динамическими:Агрегация Neo4j в зависимости от свойства отношения
Например, Джон мог оценить Титаник 3,8/5 для действующих и 4/5 для специальных эффектов. Анна могла оценить Титаника 4/5 по актерскому и 5/5 на декоре
На данный момент, моя стратегия:
- два типа узлов: Человек и: Фильм
- соотношению: Person - [: Оценить {критерии: строка, оценка: поплавок}] ->: фильм
Мой вопрос: есть ли способ Cypher запроса рейтинги фильма агрегирование ранги по критериям?
Этот запрос на фильм Титаник должен вернуть что-то вроде:
[ {criteria: acting, avg_m.grade : 3.9},{criteria: special effects, avg_m.grade : 4},{criteria: decor, avg_m.grade : 5}]
Не имеет смысла менять название отношения вместо того, чтобы иметь свойство, указывающее критерии? Например. '(: Person) - [: RATED_ACTING {рейтинг: 5}] -> (: Movie)', '(: Person) - [: RATED_SPECIAL_EFFECTS {рейтинг: 4}] -> (: Movie)' и т. Д. –
Оба делают смысл, ваш вариант будет быстрее nicole, но если вам все равно нужно получить доступ к свойствам (рейтинг), то это не будет иметь такой разницы, а запрос легче читать/писать для критериев как свойство. –
Решение Nicole действительно может работать, но я хочу, чтобы критерии были динамическими (генерируемыми пользователями): как я могу запросить отношение, о котором я не знаю типа? – Hugo