2016-09-27 3 views
1

무엇 다음 쿼리 수있는 가장 좋은 방법입니다 :여러 가장자리 정점를 조회하는 방법

(V:Button {color: 'red'})<-[E:Touched {t_date: date}]-(V:User) 

1 버튼, 3 사용자가, 각 사용자가 색 버튼에 다양한 t_dates 여러 모서리를 가지고 빨간. 빨간 버튼은 1 개뿐이지만 사용자와 상호 작용은 수백만 개입니다. 버튼을 시작점으로 삼는 것이 갈 길이라고 가정합니다. 모든 속성 등, 날짜 A와 B 사이의 버튼을 터치 사용자의

  1. 카운트 범위 쿼리를 지원하기 위해 올바른 인덱스가
  2. 날짜 Z와 Y 사이의 버튼을 감동과 접촉하지 않은 사용자의
  3. 카운트 날짜 A와 B 사이의
  4. 날짜 A와 B 사이에 또한 감사 날짜 Z와 Y

사이의 버튼을 터치 사용자의

  • 백작! 날짜 A와 B 날짜 Z와 Y 사이의 버튼을 터치 및 최신 A를 사이에 접촉하지 않은 사용자의

    g.V().has("Button", "color", "red"). 
        inE("Touched").has("t_date", between(A, B)).outV().dedup().count() 
    

    카운트 사이에 버튼을 터치 사용자의

  • 답변

    0

    카운트 B

    g.V().has("Button", "color", "red").as("b"). 
        sideEffect(inE("Touched").has("t_date", between(A, B)).inV().aggregate("x")). 
        inE("Touched").has("t_date", between(Y, Z)).inV().where(without("x")).dedup().count() 
    

    카운트 날짜 A와 B 사이에 AND 또한에만 사용자와 버튼 사이의 한쪽 끝이 될 수 있다면 당신은 dedup()을 제거 할 수 있습니다

    g.V().has("Button", "color", "red").as("b"). 
        sideEffect(inE("Touched").has("t_date", between(A, B)).inV().aggregate("x")). 
        inE("Touched").has("t_date", between(Y, Z)).inV().where(within("x")).dedup().count() 
    

    날짜 Z 사이와 Y 버튼을 터치 사용자. 내가 걱정하는 유일한 것은 "사용자와 상호 작용이 수백만 개가 될 것"입니다. 모델이 확장되지 않고 수백만 개의 가장자리가 잘 돌아 가지 않습니다 (전혀없는 경우).