【发布时间】:2021-04-30 11:44:46
【问题描述】:
假设我有一个社交图谱,其中一部分代表参加聚会的人,还有一个用于跟踪邀请的应用。我有一个顶点给约翰,一个顶点给大卫,他们都参加了同一个聚会。
在应用程序中,约翰说他邀请了莎拉,大卫说他是受莎拉邀请的,但我没有莎拉的顶点。
在单个查询中,我可以创建 Sarah 并将 John 连接到 Sarah 并将 Sarah 连接到 David 吗?
到目前为止,我能做的最好的事情是使用合并模式获取或创建以下内容来确定 Sarah 是否从以下人员中丢失:
g.V().has('name', 'John').out().has('name', 'Sarah').as_('x').out().has('name', 'David').select('x').fold().coalesce(unfold(), constant('how to I put Sarah between John and David here?')).next()
这一切都可以在一个查询中完成吗 - 用多步变异遍历替换我的常量?
编辑:
我更进一步。如果我已经有 Sarah 的顶点,我认为以下方法有效:
g.V().has('name', 'John').addE('invited').to(g.V().has('name', 'Sarah').as_('x').addE('invited').to(g.V().has('name', 'David')).select('x')).next()
这是推荐的方法吗?有没有办法在同一个查询中创建 Sarah 顶点?我可以在里面再嵌套一个.fold().coalesce(unfold(), ...) 吗?
【问题讨论】:
标签: gremlin janusgraph gremlinpython