【问题标题】:Gremlin - how to ensure one vertex only have one inbound edge?Gremlin - 如何确保一个顶点只有一个入站边?
【发布时间】:2022-12-17 02:50:11
【问题描述】:
我有person顶点和book顶点通过owns边连接(又名person=>owns=>book)。我如何确保一个book只能由一个person拥有?换句话说,仅当顶点 book_1 没有入站边时,我才需要像 addE('owns').from(person_1).to(book_1) 这样的 Gremlin 查询。
【问题讨论】:
标签:
gremlin
graph-databases
amazon-neptune
【解决方案1】:
此模式在“元素存在”recipe 中进行了描述,并遵循标准的fold()/coalesce()/unfold() 模式。基本上,你会这样:
g.V('book_1_id').as('book_1').
V('person_1_id').as('person_1').
coalesce(outE('owns').where(outV().as('book_1')),
addE('owns').from(`person_1`).to(`book_1`))
如果您使用的是 TinkerPop 3.6.x 或更高版本,您可以尝试使用 mergeE() step:
g.mergeE([(from):'book_id_1',(to):'book_id_1',(label):'owns'])