在一个查询中在 Apache TinkerPop Gremlin 中获取或创建 vertex/edge
Get or Create vertex/edge in Apache TinkerPop Gremlin in one query
如何通过一次查询在 Apache TinkerPop Gremlin 中获取或创建 vertex/edge?
目前我在做,
id = None
if g.V().has('employee', 'name', 'thirumal').hasNext():
id = g.V().has('employee', 'name', 'thirumal').values('id')
else:
id = uuid4()
g.addV('employee').property(T.id, id).property('name', 'Thirumal').iterate()
logging.debug("Id is {}".format(id))
目前推荐在 Gremlin 中执行此操作的方法是使用 fold/coalesce/unfold
模式。在你的例子中,它变成了这样的:
g.V().has('employee', 'name', 'thirumal').fold().
coalesce(unfold(),
addV('employee').property(T.id, id).property('name', 'Thirumal')).
id().next()
在 Apache TinkerPop 社区中,我们正在考虑添加更多的方式来更加声明地执行这种更新插入,但目前,这是推荐使用的模式。
如何通过一次查询在 Apache TinkerPop Gremlin 中获取或创建 vertex/edge?
目前我在做,
id = None
if g.V().has('employee', 'name', 'thirumal').hasNext():
id = g.V().has('employee', 'name', 'thirumal').values('id')
else:
id = uuid4()
g.addV('employee').property(T.id, id).property('name', 'Thirumal').iterate()
logging.debug("Id is {}".format(id))
目前推荐在 Gremlin 中执行此操作的方法是使用 fold/coalesce/unfold
模式。在你的例子中,它变成了这样的:
g.V().has('employee', 'name', 'thirumal').fold().
coalesce(unfold(),
addV('employee').property(T.id, id).property('name', 'Thirumal')).
id().next()
在 Apache TinkerPop 社区中,我们正在考虑添加更多的方式来更加声明地执行这种更新插入,但目前,这是推荐使用的模式。