我想在一个查询中创建1000多条边。目前,我正在使用AWS Neptune数据库和gremlin.net来创建它。我面临的问题与速度有关。由于HTTP请求,它花费了大量时间。因此,我计划将所有的查询组合成一个字符串,并在一个镜头中执行。
_g.AddE("allow").From(_g.V().HasLabel('person').Has('name', 'name1')).To(_g.V().HasLabel('phone').Where(__.Out().Has('sensor', 'nfc'))).Next();
存在"的可能性;致">(目标(数据库中可能没有"顶点"。在这种情况下,此查询也会失败。因此,在使用hasNext((执行此查询之前,我必须应用检查该顶点是否存在。
因此,到目前为止,它运行良好,但当我考虑同时组合所有1000+个边缘创建时,是否可以编写一个不中断的查询,如果"致">(目标(未找到顶点?
您应该考虑对每个顶点使用元素存在模式,如TinkerPop食谱中所示。
在您的示例中,您将替换查询的以下部分:
_g.V().HasLabel('person').Has('name', 'name1')
使用类似的东西(我没有.NET环境来测试语法(:
__.V().Has('person', 'name', 'name1').Fold().
coalesce(__.Unfold(), __.AddV('person').Property('name', 'name1')
这将充当Upsert,并返回现有顶点或添加具有name特性的新顶点。然后,可以在"到"步骤中使用相同的图案,以确保在创建边之前也存在该图案。