Gremlin:按活动位置和不活动用户的计数位置生成列表

时间:2019-03-22 15:03:22

标签: orientdb gremlin

我有顶点的人,用户类型和位置。人们具有出众的边缘people_location和people_usertype。人员具有属性“名称”,用户类型具有属性“ activationStatus”,位置具有属性“名称”。

我想创建一个看起来像这样的列表:

[[1]:https://i.stack.imgur.com/lKzZL.png]

我希望按位置统计激活状态为“活动”和“不活动”的人员数,其中位置中包含“美国”。

这仅是我想用来按位置(名称)以美国开头的地理位置来计算人数的信息:

g.V()hasLabel('people').out('people_publicisofficelocation')
.filter(has('name',between('US','UT')))
.groupCount().by('name')

它正在运行,但没有产生结果。

2 个答案:

答案 0 :(得分:0)

您可以使用has('name',between('US','UT'))之类的东西在3.4之前的TinkerPop版本中模拟“开始于”行为,因此您可以用上面的过滤器行代替。如果您使用的图形实现支持TinkerPop 3.4,则可以使用其他文本谓词作为开头,结尾和包含。

正如其他人所说,如果您可以发布一些示例addV()addE()步骤来构建图形的一部分,则给出更精确的答案将变得更加容易。

答案 1 :(得分:0)

这对我有用!

g.V().hasLabel('Location').filter(has('name',between('US','UT'))) .project('Name','Active', 'Inactive', 'Total')  .by('name')  .by(__.both('people_location').out('people_usertype') .where(values('activationStatus').is(eq('Active'))).count())  .by(__.both('people_location').out('people_usertype') .where(values('activationStatus').is(eq('Inactive'))).count())  .by(__.both('people_location').out('people_usertype').count())