2
取得與不同的標籤節點在一個查詢我有三個類型的節點:如何Neo4j的
(:Meal), (:User), (:Dish)
人際關係:
(:Meal)<-[:JOIN]-(:User), (:Meal)<-[:ORDERED]-(:Dish)
現在我想取餐的一個方面的信息查詢。我想結果是這樣的:
id: 1
name: xxx,
users: [1,2,3,4],
dishes: [23,42,42]
其中用戶和菜餚域中包含這些用戶和菜餚的ID。
我想:
MATCH (meal:Meal)
OPTIONAL MATCH (meal)<-[:JOIN]-(user:User)
OPTIONAL MATCH (meal)<-[:ORDERED]-(dish:Dish)
RETURN id(meal), meal.name, COLLECT(ID(user)), COLLECT(ID(dish))
然而,這個查詢會產生用戶和菜的大量重複。如果有N個用戶和M個菜,它將匹配N * M個用戶菜。
我知道我可以使用DISTINCT消除重複。但是,我不確定這種查詢的效率。
有沒有什麼更好的辦法?