Cypher kullanarak bir şefin sahip olabileceği eksik malzemeleri "bulacak" bir sorgu oluşturmaya çalışıyorum. Grafiğim şöyle ayarlandı:
(ingredient_value)-[:is_part_of]->(ingredient)
(ingredient)
name = "dye colors" anahtar / değerine sahip olacaktır. (ingredient_value)
değerin bir anahtarı / değeri olabilir = "kırmızı" ve " (ingredient, name="dye colors")
.
(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)
Bu sorguyu ingredients
, bir tarifin gerektirdiği, ancak gerçek değerlerini almak için kullanıyorum , ancak ingredients
her tarifin gerektirdiği tüm malzemeler yerine yalnızca şefin sahip olmadığı geri dönüşü istiyorum . denedim
(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)<-[:has_ingredient*0..0]-chef
ama bu hiçbir şey döndürmedi.
Bu, cypher / neo4j ile başarılabilecek bir şey mi yoksa bu, en iyi şekilde tüm malzemeleri iade edip bunları kendim sıralayarak ele alınabilecek bir şey mi?
Bonus: Ayrıca, bir şefin sahip olduğu tüm değerleri bir tarifin gerektirdiği tüm değerlerle eşleştirmek için cypher'ı kullanmanın bir yolu var. Şimdiye kadar sadece a tarafından döndürülen chef-[:has_value]->ingredient_value<-[:requires_value]-recipe
ve sonuçları kendim toplayan tüm kısmi eşleşmeleri geri verdim.