0

我需要一些帮助,因为我是图形数据库的新手。

我在我的 DSE Graph 上运行这个 Gremlin 查询:

g.V('user:589435392:512').out('events').inE('events')

图表视图返回

图表视图

但原始 JSON 返回:

{
  "id": "{out_vertex={member_id=512, community_id=589435392, ~label=user}, local_id=d2e29e60-5fc2-11e6-87aa-8d7f17e3c204, in_vertex={member_id=0, community_id=100599424, ~label=events}, ~type=events}",
  "label": "events",
  "type": "edge",
  "inVLabel": "events",
  "outVLabel": "user",
  "inV": "events:100599424:0",
  "outV": "user:589435392:512"
},
{
  "id": "{out_vertex={member_id=1, community_id=1205145984, ~label=user}, local_id=7c838fd0-6327-11e6-87aa-8d7f17e3c204, in_vertex={member_id=0, community_id=100599424, ~label=events}, ~type=events}",
  "label": "events",
  "type": "edge",
  "inVLabel": "events",
  "outVLabel": "user",
  "inV": "events:100599424:0",
  "outV": "user:1205145984:1"
}

我需要这样的东西:

{ 
    "event": {"some infos about this event"},
    "users": [{"user1"}, {"user2"},...]
}

如何实现 JSON 输出,显示用户的所有事件以及事件的所有相关用户?

4

3 回答 3

1

你应该试试这个查询:

g.V('user:589435392:512').out('events').
  project('event','users').by().by(__.in('events').fold())
于 2016-08-24T19:02:20.747 回答
0

您可能想查看包含此项目的数据模型。看起来好像用户是顶点,事件是边。您是否考虑过将事件创建为边缘?

帮助基于现有 User --Event--> User 模型的 gremlin 语法

gV().outE('Events') // 将为您提供事件的所有边,包括指向边内外的顶点

在您编写的查询中,您使用 out() 相当于使用 outE().inV()

于 2016-08-24T12:48:25.150 回答
0

描述是事件顶点的属性时,以下查询应该有效:

g.V().has('user','name','user1').out().as('event').in().as('user').select('event','user').by('description').by('name')
==>{event=some infos about this event, user=user1}
==>{event=some infos about this event, user=user2}

除此之外,我不会使用事件作为边缘标签,而是选择更具描述性的东西,如triggerEvent 、 hadEvent类似的东西。

于 2016-08-24T17:41:28.193 回答