2
에 한 쿼리에서 다른 레이블 노드를 가져 오는 방법은 세 개의 노드의 유형이 질문. 내가 얻을 같은 결과를하려는 :Neo4j
사용자 및 요리 필드는 그 사용자와 요리의 ID를 포함id: 1
name: xxx,
users: [1,2,3,4],
dishes: [23,42,42]
.
내가 시도 :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를 사용하여 중복을 제거 할 수 있음을 알고 있습니다. 그러나 이러한 쿼리의 효율성에 대해서는 확신 할 수 없습니다.
더 좋은 방법이 있습니까?