Gremlin 如何查询具有多条边的顶点

Gremlin 如何查询具有多条边的顶点,gremlin,graph-traversal,tinkerpop3,Gremlin,Graph Traversal,Tinkerpop3,查询以下内容的最佳方式是什么: (V:Button {color: 'red'})<-[E:Touched {t_date: date}]-(V:User) (V:按钮{color:'red'}) 在日期A和B之间触摸按钮的用户计数 在日期Z和Y之间触摸按钮而在日期A和B之间未触摸按钮的用户数 在日期A和B之间以及在日期Z和Y之间触摸按钮的用户计数 如果用户和按钮之间只能有一条边,则可以删除重复数据消除()。我唯一担心的是“用户和交互将以百万计”。您的模型将无法缩放,并且遍历数百万条边的

查询以下内容的最佳方式是什么:

(V:Button {color: 'red'})<-[E:Touched {t_date: date}]-(V:User)
(V:按钮{color:'red'})
在日期A和B之间触摸按钮的用户计数

在日期Z和Y之间触摸按钮而在日期A和B之间未触摸按钮的用户数

在日期A和B之间以及在日期Z和Y之间触摸按钮的用户计数

如果用户和按钮之间只能有一条边,则可以删除重复数据消除()。我唯一担心的是“用户和交互将以百万计”。您的模型将无法缩放,并且遍历数百万条边的效果也不会很好(如果有的话)

g.V().has("Button", "color", "red").
  inE("Touched").has("t_date", between(A, B)).outV().dedup().count()
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()
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()