Gremlin遍历基础:过滤结果及顶点间关联创建方法咨询
别担心,刚上手Gremlin的时候搞不清怎么给顶点加关联太正常啦!我来一步步给你拆解怎么搞定你说的场景~
给Gremlin顶点创建关联的实用操作指南
核心逻辑其实很简单:用addE()指定边的类型标签,再通过from()和to()把两个顶点关联起来(方向要贴合你的业务语义哦)。下面针对你的场景逐个举例:
1. 给Blog和Post创建「发布」关联
假设你的blog顶点有唯一标识比如id: "my_blog",三个post的id分别是post_001、post_002、post_003,我们可以给它们加published边(语义是blog发布post,边方向从blog指向post):
// 单个关联:给post_001关联到my_blog g.V().has('blog', 'id', 'my_blog').as('b').V().has('post', 'id', 'post_001').addE('published').from('b') // 批量关联:一次性把三个post都关联到同一个blog g.V().has('blog', 'id', 'my_blog').as('b').V().has('post', 'id', within('post_001', 'post_002', 'post_003')).addE('published').from('b')
2. 给User和Blog创建「关注」关联
假设用户顶点id是user_john,要让他关注my_blog,边标签用follows(方向从user指向blog,符合“用户关注博客”的语义):
g.V().has('user', 'id', 'user_john').addE('follows').to(g.V().has('blog', 'id', 'my_blog'))
3. 给User和Post创建「已读取」关联
用户user_john已经读了post_001和post_002,边标签用read(方向从user指向post):
// 单个关联 g.V().has('user', 'id', 'user_john').addE('read').to(g.V().has('post', 'id', 'post_001')) g.V().has('user', 'id', 'user_john').addE('read').to(g.V().has('post', 'id', 'post_002')) // 批量关联更高效 g.V().has('user', 'id', 'user_john').as('u').V().has('post', 'id', within('post_001', 'post_002')).addE('read').from('u')
小补充
如果你是创建顶点的同时就想直接关联,还可以链式操作一步到位:
// 创建新blog的同时,直接创建一个post并关联发布关系 g.addV('blog').property('id', 'new_blog').as('b').addV('post').property('id', 'post_004').addE('published').from('b')
这样就能把你的blog、post、user都按需求关联起来啦,要是有更特殊的场景细节,随时再唠~
内容的提问来源于stack exchange,提问作者legaldeveloper
相关产品推荐
相关产品推荐

