我试图理解条件插入的这种模式是如何工作的:
g.V()
.hasLabel('person').has('name', 'John')
.fold()
.coalesce(
__.unfold(),
g.addV('person').property('name', 'John')
).next();
Run Code Online (Sandbox Code Playgroud)
折叠/展开的目的是什么?为什么这些是必要的,为什么这不起作用:
g.V()
.coalesce(
__.hasLabel('person').has('name', 'John'),
g.addV('person').property('name', 'John')
).next();
Run Code Online (Sandbox Code Playgroud)
折叠然后展开的模式对我来说似乎是多余的,但上述情况并没有产生相同的结果.
我有一组用户名(例如['abc','def','ghi'])要添加到图表中的"用户"标签下.
现在我首先要检查用户名是否已经存在(g.V().hasLabel('user').has('username','def')),然后仅添加"用户"标签下用户名属性不匹配的用户名.
此外,这可以在单个gremlin查询或groovy脚本中完成吗?
我正在使用titan graph数据库,tinkerpop3和gremlin REST服务器.
我在蔚蓝中使用波斯菊图数据库。
有谁知道只有在不存在两个顶点之间才可以添加边的方法(使用gremlin图查询)?
添加顶点时可以做到这一点,但不能添加边。我从这里获取了执行此操作的代码:
g.Inject(0).coalesce(__.V().has('id', 'idOne'), addV('User').property('id', 'idOne'))
Run Code Online (Sandbox Code Playgroud)
谢谢!
使用Gremlin,我可以通过发出以下命令在Azure Cosmos DB图中创建一个顶点
g.addV('the-label').property('id', 'the-id')
Run Code Online (Sandbox Code Playgroud)
然后使用找到它
g.V('the-label').has('id', 'the-id')
Run Code Online (Sandbox Code Playgroud)
但是,我还没有找到一种发出查询的方法,该查询将在缺少该节点时插入该节点,如果已经存在则仅获取对该节点的引用。有办法吗?
我的具体用例是,我想在两个节点之间添加一条边,而不管这些节点(或该边)是否在单个查询中已经存在。我尝试了这种upsert方法,但是显然Cosmos DB不支持Groovy闭包,因此它不起作用。