Я пытаюсь создать запрос с использованием шифра, который «найдет» недостающие ингредиенты, которые могут быть у шеф-повара. Мой график настроен так:
(ingredient_value)-[:is_part_of]->(ingredient)
(ingredient)
будет иметь ключ / значение name = "dye colors". (ingredient_value)
может иметь ключ / значение value = "red" и "является частью" (ingredient, name="dye colors")
.
(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)
Я использую этот запрос, чтобы получить все ingredients
, но не их фактические значения, которые требуются рецепту, но я хотел бы, чтобы возвращались только те ingredients
, которых нет у шеф-повара, вместо всех ингредиентов, требуемых для каждого рецепта. Я старался
(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)<-[:has_ingredient*0..0]-chef
но это ничего не вернуло.
Может ли это быть выполнено с помощью cypher / neo4j, или это то, что лучше всего сделать, вернув все ингредиенты и отсортировав их самостоятельно?
Бонус: также есть способ использовать шифр, чтобы сопоставить все значения, которые имеет повар, со всеми значениями, которые требует рецепт. До сих пор я возвращал только все частичные совпадения, которые возвращает a, chef-[:has_value]->ingredient_value<-[:requires_value]-recipe
и сам собираю результаты.