Próbuję utworzyć zapytanie za pomocą szyfru, które pozwoli „znaleźć” brakujące składniki, które może mieć szef kuchni. Mój wykres wygląda następująco:
(ingredient_value)-[:is_part_of]->(ingredient)
(ingredient)
miałby klucz / wartość nazwa = "kolory barwnika". (ingredient_value)
może mieć klucz / wartość wartość = „czerwony” i „jest częścią” (ingredient, name="dye colors")
.
(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)
Używam tego zapytania, aby uzyskać wszystkie ingredients
wymagane przez przepis wartości, ale nie ich rzeczywiste wartości, ale chciałbym zwrócić tylko to ingredients
, czego szef kuchni nie ma, zamiast wszystkich składników wymaganych w każdym przepisie. próbowałem
(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)<-[:has_ingredient*0..0]-chef
ale to nic nie zwróciło.
Czy jest to coś, co można osiągnąć za pomocą cypher / neo4j, czy jest to coś, z czym najlepiej sobie poradzić, zwracając wszystkie składniki i samodzielnie je przeglądając?
Bonus: istnieje również sposób, aby użyć szyfrowania, aby dopasować wszystkie wartości, które ma szef kuchni, do wszystkich wartości, których wymaga przepis. Do tej pory zwracałem tylko wszystkie częściowe dopasowania, które są zwracane przez a, chef-[:has_value]->ingredient_value<-[:requires_value]-recipe
i sam agregowałem wyniki.