我需要一些帮助,因为我在图数据库中非常新。
我在DSE图上运行这个Gremlin查询:
g.V('user:589435392:512').out('events').inE('events')
图表视图返回
但Raw 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输出,该输出显示用户的所有事件以及事件的所有相关用户?
答案 0 :(得分:1)
您应该尝试此查询:
g.V('user:589435392:512').out('events').
project('event','users').by().by(__.in('events').fold())
答案 1 :(得分:0)
您可能希望查看此项目的数据模型。看起来好像用户是顶点而事件是边缘。您是否考虑过将事件创建为边缘?
根据现有的User --Event - >帮助处理gremlin语法。用户模型
g.V()。outE('Events')//将为您提供事件的所有边缘,包括指向边缘和边缘的顶点
在您编写的查询中使用out(),这相当于使用outE()。inV()
答案 2 :(得分:0)
当 description 是事件顶点的属性时,以下查询应该有效:
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}
您可以在此处看到它:http://gremlinbin.com/bin/view/57bdda16b22b5
除此之外,我不会将事件用作边缘标签,而是选择更具描述性的内容,例如 triggeredEvent , hadEvent ,或者类似的东西。