在Titan中有条件地创建顶点

达博

我有一种情况需要检查图中是否已经存在具有三个令人满意的属性的顶点property1 ='a',property2 ='b',property3 ='c',如果不存在,则需要创建它。基本上,这三个属性的组合应在图形中具有唯一的顶点。我已经尝试了这个gremlin代码片段,以根据一个属性“ id”进行检查

getOrCreate = { id ->
  def p = g.V('userId', id)
  if (p.hasNext()) ? p.next() : g.addVertex([userId:id])

由于我是初学者,因此对于修改此参数以实现我所需的gremlin的最佳方法尚不十分清楚。我所能想到的就是在最后一条语句中嵌套更多的if和else。任何帮助表示赞赏,谢谢。

斯蒂芬·马勒

有几种方法。一种方法是将遍历范围扩大一点:

getOrCreate = { one, two, three ->
  def p = g.V('prop1', one).has('prop2',two).has('prop3',three)
  p.hasNext() ? p.next() : g.addVertex([prop1:one,prop2:two,prop3:three])

在上面的代码中,prop1代表一个索引属性,然后仅对其余属性进行过滤。prop应该是最有选择性的属性,因为它应该过滤掉最多的结果。

如果由于某种原因prop不够选择性,那么该解决方案可能不够快。换句话说,如果您有10亿个顶点并g.V('prop1', one)返回100000顶点,那么您将在内存中过滤这些顶点,这有点慢。如果是您的情况,我将考虑通过在索引上添加第四个属性(将所有三个属性合并为一个)来创建“穷人”综合索引。然后就可以进行查询了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在SQlite中有条件地创建表

来自分类Dev

有条件地更改顶点形状

来自分类Dev

通过在 R 中有条件地组合现有列来创建新列

来自分类Dev

在MongoDB中有条件地应用和条件

来自分类Dev

将T作为参数传递给在Java中有条件地创建Generic的对象

来自分类Dev

如何在有条件的js中有条件地应用标题

来自分类Dev

在JMeter中有条件地停止用户线程

来自分类Dev

在AngularJS应用中有条件地注入模块

来自分类Dev

在AndroidManifest中有条件地声明服务

来自分类Dev

在dplyr中有条件地突变数据

来自分类Dev

在SQL Server中有条件地应用联接

来自分类Dev

在AngularJS中有条件地调用函数

来自分类Dev

在StructureMap中有条件地配置实例

来自分类Dev

在PHP中有条件地使用特征

来自分类Dev

在do块中有条件地执行“操作”

来自分类Dev

在MyBatis中有条件地执行<selectKey>

来自分类Dev

在AngularJS中有条件地绑定数据

来自分类Dev

在Wordpress中有条件地打印CSS样式

来自分类Dev

在C ++中有条件地调用JNI

来自分类Dev

在Ruby中有条件地定义函数

来自分类Dev

在React中有条件地设置活动类

来自分类Dev

从多个单元中有条件地减去

来自分类Dev

在Jest中有条件地运行测试

来自分类Dev

在Nginx配置中有条件地映射值

来自分类Dev

在R中有条件地填充ggplot的背景

来自分类Dev

显示动作在MVC中有条件地链接

来自分类Dev

在Powershell中有条件地注册存储库

来自分类Dev

如何在Angular中有条件地渲染?

来自分类Dev

在捕获块中有条件地发送响应