在 Datastax CassandraCSharpDriver.Graph 中向现有顶点添加新顶点和边,但出现边 OUT 错误
Adding a new vertex and an edge to an existing vertex in Datastax CassandraCSharpDriver.Graph but get edge OUT error
我正在向 Datastax Graph 中的现有顶点添加一个新顶点和一条边,我想看看如何使用 Datastax CassandraCSharpDriver.Graph。
有效的 Gremlin 代码如下所示:
Vertex link1 = graph.addVertex(label, "link").property("id", "link-2")
Vertex item1 = g.V().has("item", "id", "item-1").next()
item1.addEdge('contains', link1)
但在 C# 驱动程序语法中,我希望做这样的事情,但是当我执行它时,错误是 "adjacency of 'contains' in direction 'OUT' has not been added to 'link'"
GraphTraversalSource g = DseGraph.Traversal(mySession);
var traversal = g.AddV("link").Property("id", "link-1")
.AddE("contains")
.V("item").Has("id", Eq("item-1"));
GraphResultSet result = mySession.ExecuteGraph(traversal);
我创建了这样的边缘和边缘连接:
schema.edgeLabel("contains").multiple().create()
schema.edgeLabel("contains")
.connection("item", "link")
.connection("link", "item")
.add()
如果架构边缘设置不正确或如何在 Datastax 中以最佳方式做到这一点,有什么想法吗?
你的 Gremlin 在这里:
g.AddV("link").Property("id", "link-1")
.AddE("contains")
.V("item").Has("id", Eq("item-1")
格式不正确。应该是:
g.AddV("link").Property("id", "link-1").As('l1').
V("item").Has("id", Eq("item-1")).
AddE('contains').To('l1')
使用 AddE()
您需要指定 From()
和 To()
来标识边连接的顶点。如果不指定这些,AddE()
将只使用传入的 Vertex
来创建自引用边的两个值。因此在这种情况下,您应该只需要指定 To()
因为 From()
是推断出来的。
请注意 Reference Documentation 中的示例,您应该在其中看到执行此操作的其他方法。
我正在向 Datastax Graph 中的现有顶点添加一个新顶点和一条边,我想看看如何使用 Datastax CassandraCSharpDriver.Graph。
有效的 Gremlin 代码如下所示:
Vertex link1 = graph.addVertex(label, "link").property("id", "link-2")
Vertex item1 = g.V().has("item", "id", "item-1").next()
item1.addEdge('contains', link1)
但在 C# 驱动程序语法中,我希望做这样的事情,但是当我执行它时,错误是 "adjacency of 'contains' in direction 'OUT' has not been added to 'link'"
GraphTraversalSource g = DseGraph.Traversal(mySession);
var traversal = g.AddV("link").Property("id", "link-1")
.AddE("contains")
.V("item").Has("id", Eq("item-1"));
GraphResultSet result = mySession.ExecuteGraph(traversal);
我创建了这样的边缘和边缘连接:
schema.edgeLabel("contains").multiple().create()
schema.edgeLabel("contains")
.connection("item", "link")
.connection("link", "item")
.add()
如果架构边缘设置不正确或如何在 Datastax 中以最佳方式做到这一点,有什么想法吗?
你的 Gremlin 在这里:
g.AddV("link").Property("id", "link-1")
.AddE("contains")
.V("item").Has("id", Eq("item-1")
格式不正确。应该是:
g.AddV("link").Property("id", "link-1").As('l1').
V("item").Has("id", Eq("item-1")).
AddE('contains').To('l1')
使用 AddE()
您需要指定 From()
和 To()
来标识边连接的顶点。如果不指定这些,AddE()
将只使用传入的 Vertex
来创建自引用边的两个值。因此在这种情况下,您应该只需要指定 To()
因为 From()
是推断出来的。
请注意 Reference Documentation 中的示例,您应该在其中看到执行此操作的其他方法。