You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Gremlin查询在AWS Neptune中创建共享两部电影的Person节点关系?

在AWS Neptune中创建共享两部喜欢电影的Person节点关系

示例数据创建(Gremlin语句)

// 创建Person节点
g.addV('person').property('id', 'p1').property('name', 'Alice')
g.addV('person').property('id', 'p2').property('name', 'Bob')
g.addV('person').property('id', 'p3').property('name', 'Charlie')
g.addV('person').property('id', 'p4').property('name', 'David')

// 创建Movie节点
g.addV('movie').property('id', 'm1').property('title', 'Inception')
g.addV('movie').property('id', 'm2').property('title', 'Interstellar')
g.addV('movie').property('id', 'm3').property('title', 'The Dark Knight')
g.addV('movie').property('id', 'm4').property('title', 'Tenet')

// 创建likes_movie关联边
g.V('p1').addE('likes_movie').to(V('m1'))
g.V('p1').addE('likes_movie').to(V('m2'))
g.V('p1').addE('likes_movie').to(V('m3'))

g.V('p2').addE('likes_movie').to(V('m1'))
g.V('p2').addE('likes_movie').to(V('m2'))
g.V('p2').addE('likes_movie').to(V('m4'))

g.V('p3').addE('likes_movie').to(V('m1'))
g.V('p3').addE('likes_movie').to(V('m3'))

g.V('p4').addE('likes_movie').to(V('m2'))
g.V('p4').addE('likes_movie').to(V('m4'))

核心查询语句

以下查询会找出所有共享至少两部喜欢电影的Person节点对,并创建shares_two_liked_movies关联边,同时避免重复创建双向边:

g.V().hasLabel('person').as('p1')
  .out('likes_movie').as('m')
  .in('likes_movie').hasLabel('person').as('p2')
  .where(neq('p1')) // 排除自身配对
  .where(lt('p1.id', 'p2.id')) // 确保节点对仅被处理一次(避免A→B和B→A重复)
  .group().by(['p1', 'p2']).by(count('m').as('common_movies'))
  .unfold()
  .where(select('common_movies').is(gte(2)))
  .select(keys).as('pair')
  .addE('shares_two_liked_movies').from(select('pair').by(0)).to(select('pair').by(1))

关键逻辑说明

  • 遍历所有Person节点,找到他们喜欢的电影,再反向关联到其他喜欢该电影的Person
  • 通过neq('p1')排除同一个节点自我配对的情况
  • 利用lt('p1.id', 'p2.id')确保每个节点对仅被处理一次,避免生成重复的双向边
  • 分组统计每对Person的共同喜欢电影数量,筛选出数量≥2的节点对
  • 为符合条件的节点对创建指定关联边

注意事项

  • 如果你的Person节点不用id作为唯一标识,可将lt('p1.id', 'p2.id')替换为实际的唯一属性比较(比如lt('p1.name', 'p2.name'))
  • 数据量较大时,建议先执行到.unfold().where(...)部分,确认筛选出的节点对符合预期后,再添加addE步骤创建边

内容的提问来源于stack exchange,提问作者jjjjohnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:43:23