查询以下内容的最佳方法是什么:
(V:Button {color: 'red'})<-[E:Touched {t_date: date}]-(V:User)
1个按钮,3个用户,每个用户有多个边缘,各种t_dates,红色按钮。只有一个红色按钮,但用户和互动将达数百万。我假设以按钮为起点是要走的路。所有属性都有正确的索引来支持范围查询等。
谢谢!
答案 0 :(得分:1)
在日期A和B之间触摸按钮的用户数。
g.V().has("Button", "color", "red").
inE("Touched").has("t_date", between(A, B)).outV().dedup().count()
在日期Z和Y之间触摸按钮并且在日期A和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之间以及日期Z和Y之间触摸按钮的用户数。
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()
如果用户和按钮之间只有一条边,则可以删除dedup()
。我唯一担心的是&#34;用户和互动将达到数百万&#34;。您的模型不会缩放并且遍历数百万优势并且表现良好(如果有的话)。