Запрос Neo4j относительно двух элементов - PullRequest
0 голосов
/ 27 мая 2020

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

Ниже приведен фрагмент узла торта и ингредиентов (есть еще ингредиенты и торты, но я не публиковал их здесь, поскольку все они отформатированы одинаково):

  (brownies:Cake {name: "Brownies"}),
  (brownies)-[:CONTAINS {quantity: 50, unit: "grams"}]->(white),
  (brownies)-[:CONTAINS {quantity: 250, unit: "grams"}]->(selfraising),
  (brownies)-[:CONTAINS {quantity: .5, unit: "grams"}]->(salt),
  (brownies)-[:CONTAINS {quantity: 125, unit: "grams"}]->(sugar),
  (brownies)-[:CONTAINS {quantity: 250, unit: "grams"}]->(cocoa),
  (brownies)-[:CONTAINS {quantity: 125, unit: "grams"}]->(lemonade),
  (brownies)-[:CONTAINS {quantity: 125, unit: "grams"}]->(cola),
  (brownies)-[:GARNISHED_WITH {how: "chopped on top"}]->(cherry),
  (brownies)-[:GARNISHED_WITH {how: "chopped on top"}]->(orange),


  (limeJuice:Ingredient {name: "lime juice"}),
  (cranberryJuice:Ingredient {name: "cranberry juice"}),
  (lemonJuice:Ingredient {name: "lemon juice"}),
  (orangeJuice:Ingredient {name: "orange juice"}),
  (tomatoJuice:Ingredient {name: "tomato juice"}),
  (lemonade:Ingredient {name: "lemonade"}),
  (soda:Ingredient {name: "soda water"}),
  (spice:Ingredient {name: "spice water"}),
  (cola:Ingredient {name: "cola"}),

Neo4j, похоже, не может идентифицировать ингредиенты, но я не совсем уверен, что мой запрос отформатирован правильно, несмотря на это, вот что у меня есть на данный момент:

MATCH(x:Cake)-[:CONTAINS]-> (Ingredient: "milk" or "cream") Return x

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Вот один из способов получить торты, содержащие ВСЕ ингредиенты из списка:

MATCH (cake:Cake)
WHERE ALL(x IN ['milk', 'cream'] WHERE (cake)-[:CONTAINS]->(:Ingredient{name: x}))
RETURN cake
0 голосов
/ 27 мая 2020

Ваша Ingredient проверка узла проблематична c. Должно быть больше похоже на:

MATCH(x:Cake)-[:CONTAINS]-> (i:Ingredient)
WHERE i.name IN ['milk', 'cream']
Return x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...