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