Tôi đang cố gắng tạo một truy vấn bằng cách sử dụng cypher sẽ "Tìm" những nguyên liệu còn thiếu mà một đầu bếp có thể có, Biểu đồ của tôi được thiết lập như vậy:
(ingredient_value)-[:is_part_of]->(ingredient)
(ingredient)
sẽ có khóa / giá trị là name = "màu nhuộm". (ingredient_value)
có thể có khóa / giá trị là value = "red" và "là một phần của" (ingredient, name="dye colors")
.
(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)
Tôi đang sử dụng truy vấn này để nhận tất cả ingredients
, nhưng không phải giá trị thực của chúng, mà một công thức yêu cầu, nhưng tôi chỉ muốn trả về những thứ ingredients
mà đầu bếp không có, thay vì tất cả các thành phần mà mỗi công thức yêu cầu. Tôi đã thử
(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)<-[:has_ingredient*0..0]-chef
nhưng điều này không trả lại gì.
Đây là thứ có thể được thực hiện bởi cypher / neo4j hay đây là thứ được xử lý tốt nhất bằng cách trả lại tất cả các thành phần và tự mình sắp xếp chúng?
Phần thưởng: Ngoài ra, có một cách để sử dụng cypher để khớp tất cả các giá trị mà đầu bếp có với tất cả các giá trị mà công thức nấu ăn yêu cầu. Cho đến nay, tôi chỉ trả lại tất cả các trận đấu một phần được trả về bởi a chef-[:has_value]->ingredient_value<-[:requires_value]-recipe
và tự mình tổng hợp kết quả.