Я намагаюся створити запит за допомогою cypher, який буде "знаходити" відсутні компоненти, які може бути у шеф-кухаря. Мій графік налаштований так:
(ingredient_value)-[:is_part_of]->(ingredient)
(ingredient)
мав би ключ / значення name = "кольори барвника". (ingredient_value)
може мати ключ / значення value = "червоний" і "є частиною" (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, чи це найкраще, якщо повернути всі інгредієнти та відсортувати їх самостійно?
Бонус: Також є спосіб використовувати cypher, щоб відповідати всім значенням, які має кухар, до всіх значень, які вимагає рецепт. Поки що я повернув лише всі часткові збіги, які повертає a, chef-[:has_value]->ingredient_value<-[:requires_value]-recipe
і сам збираю результати.