Как сделать запрос с двумя условиями в Neo4j - PullRequest
0 голосов
/ 11 марта 2020

Я новичок в Neo4j, и я застрял, пытаясь получить запрос с двумя условиями, где я хочу получить все «Авторы», связанные с «Pixar» и «Fox». До сих пор я пробовал следующие два способа:

MATCH (a:Autor)- [:AUTOR_DE]-> (t:Título) -[:PRODUCIDO_POR] ->( p:Productora {Nombre: "Pixar"}),                                                                
and
MATCH (a:Autor)- [:AUTOR_DE]-> (t:Título) -[:PRODUCIDO_POR] ->( p:Productora {Nombre: "Fox"}),
return a,p

и

MATCH (a:Autor)- [:AUTOR_DE]-> (t:Título) -[:PRODUCIDO_POR] ->( p:Productora) 
WHERE ( (p:Productora) = "Fox" OR (p:Productora) = "Pixar")
return a,p

Заранее спасибо

1 Ответ

0 голосов
/ 12 марта 2020

Предполагая, что узел Productora сохраняет свое имя в свойстве name, и что каждый узел Productora имеет уникальный name, это должно работать:

MATCH (a:Autor)-[:AUTOR_DE]->(:Título)-[:PRODUCIDO_POR]->(p:Productora)
WHERE p.name = "Fox" OR p.name = "Pixar"
WITH a, COLLECT(DISTINCT p) AS ps
WHERE SIZE(ps) = 2
return a, ps

И это должно также работают:

MATCH (fox:Productora), (pixar:Productora), (a:Autor)
WHERE fox.name = "Fox" AND pixar.name = "Pixar" AND
  (a)-[:AUTOR_DE]->(:Título)-[:PRODUCIDO_POR]->(fox) AND
  (a)-[:AUTOR_DE]->(:Título)-[:PRODUCIDO_POR]->(pixar)
return a, fox, pixar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...