我在文档中看到它提到边缘支持UserSuppliedIds,但我创建的任何边缘都忽略了我的.property id分配并指定了一个guid。我不想在两个顶点之间添加重复的边缘,所以我要为它分配自己的id(然后我可以使用常规的sql语法快速有效地查询它)。我如何使用自己的'id'作为边缘?
答案 0 :(得分:1)
您指的是哪些文档?它是gremlin docs吗?
请注意,我们目前自己控制边缘的ID,以便边缘可以与源顶点并置,以提高查询效率。这是一个错误,当确实提供了边缘ID时,我们不会抛出异常。
我们正在更改此行为,并允许用户在创建边缘时指定ID。我将与团队核实,并为此获得一个ETA。
再次感谢您举报此事。如果我们能以任何其他方式提供帮助,请告诉我们。
Jayanta
答案 1 :(得分:1)
我测试了以下gremlin表达式,它添加了一个边并指定了一个自定义id
。
g.V('1231234').addE('postedTo').property('id', '1231234:post_4').from(g.V('post_4'))
使用最新版本的 Microsoft.Azure.Graph nuget包(0.2.4-preview和0.2.2-preview):
注意:只有在通过id
或addV
操作创建元素时才能分配边缘或顶点addE
属性。写入元素后,id
属性为只读。
我没有时间在图形服务器实例上测试它,但是软件包的版本0.2.2-preview
应该与部署版本相当,所以我期待相同的结果。
答案 2 :(得分:0)
由于今天似乎没有通过Gremlin API支持它,我建议你看一下使用Document API对你的图元素进行CRUD操作。这是我在工作中采取的方法,我们已经取得了很大的成功。基本上,如果您通过Gremlin插入一些顶点和边,然后使用门户网站中的SQL检查生成的文档,您将能够看到底层存储中预期的格式。
在此基础上,我们设计了一些库,这些库将POCO用于各种Vertex和Edge类型,并将它们转换为Cosmos后端预期的图形格式。这将允许您完全控制边缘的ID选择。您已经指出的一个非常重要且常见的用例对我们的系统也很重要,它可以通过限制它的Id来阻止特定顶点的多个边缘。