如何查询具有多条边的顶点
How to query for vertices with multiple edges
查询以下内容的最佳方式是什么:
(V:Button {color: 'red'})<-[E:Touched {t_date: date}]-(V:User)
1个按钮,3个用户,每个用户有多个边,有各种t_dates,到红色按钮。只有 1 个红色按钮,但用户和交互将以数百万计。我假设以按钮为起点是可行的方法。所有属性都有正确的索引以支持范围查询等
- 在日期 A 和 B 之间触摸按钮的用户数。
- 在日期 Z 和 Y 之间触摸按钮并且在日期 A 和 B 之间没有触摸按钮的用户数
- 在日期 A 和 B 之间以及日期 Z 和 Y 之间触摸按钮的用户数。
谢谢!
Count of users who touched button between date A and B.
g.V().has("Button", "color", "red").
inE("Touched").has("t_date", between(A, B)).outV().dedup().count()
Count of users who touched button between date Z and Y AND didn't touch it between date A and 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()
Count of users who touched button between date A and B AND also between date Z and 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()
。我唯一担心的是 "users and interactions will be in millions"。您的模型将无法扩展并且遍历数百万条边将不会表现良好(如果有的话)。
查询以下内容的最佳方式是什么:
(V:Button {color: 'red'})<-[E:Touched {t_date: date}]-(V:User)
1个按钮,3个用户,每个用户有多个边,有各种t_dates,到红色按钮。只有 1 个红色按钮,但用户和交互将以数百万计。我假设以按钮为起点是可行的方法。所有属性都有正确的索引以支持范围查询等
- 在日期 A 和 B 之间触摸按钮的用户数。
- 在日期 Z 和 Y 之间触摸按钮并且在日期 A 和 B 之间没有触摸按钮的用户数
- 在日期 A 和 B 之间以及日期 Z 和 Y 之间触摸按钮的用户数。
谢谢!
Count of users who touched button between date A and B.
g.V().has("Button", "color", "red").
inE("Touched").has("t_date", between(A, B)).outV().dedup().count()
Count of users who touched button between date Z and Y AND didn't touch it between date A and 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()
Count of users who touched button between date A and B AND also between date Z and 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()
。我唯一担心的是 "users and interactions will be in millions"。您的模型将无法扩展并且遍历数百万条边将不会表现良好(如果有的话)。