У меня есть следующий запрос Cypher:
MATCH (genre:Genre)<-[:BELONGS_TO]-(t:Title)
WHERE genre.name IN ["Comedy", "Drama"]
RETURN t
Возвращает названия, относящиеся к жанрам драмы Comedy OR.
Как изменить этот запрос, чтобы вернуть все заголовки, относящиеся к жанрам Comedy AND Drama?
Прошу прощения, но до сих пор не понимаю, как этого добиться
Может быть с: where genre.name = "Comedy" И genre.name = "Drama"
Нет не работает
а, понятно. Извините. Возможно, вам нужно изменить на это: MATCH (t: Title) - [: BELONGS_TO] -> (genre: Genre) <- [: BELONGS_TO] - (t) t - это псевдоним того же узла. жанр может быть в [...] так что он должен работать
Все еще не работает
Что насчет: `` `MATCH (: Genre {name: 'Comedy'}) <- [: BELONGS_TO] - (t: Title) - [: BELONGS_TO] -> (: Genre {name: 'Drama'}) RETURN t `` Или вам нужен запрос, который работает для любого количества жанров?
Спасибо, Рольф! Да, мне нужно предоставить динамическую коллекцию жанров любого размера (на основе ввода данных пользователем из пользовательского интерфейса), поэтому я предпочитаю не жестко кодировать жанры в запросе.





SIZE - ваш друг.
MATCH (t:Title)-[:BELONGS_TO]->(g:Gender)
WHERE g.name IN ["Comedy", "Drama"]
WITH t, COLLECT(g) AS g
WHERE SIZE(g) >= x
RETURN t
x - количество элементов в предложении IN
в документации приведен пример: WHERE n.name = 'Peter' XOR (n.age <30 AND n.name = 'Timothy') OR NOT (n.name = 'Timothy' OR n.name = 'Peter') Источник: neo4j.com/docs/developer-manual/current/cypher/clauses/where может это поможет.