首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用C# Datastax CassandraCSharpDriver.Graph获取连接到已知折点的所有未知折点

使用C# Datastax CassandraCSharpDriver.Graph获取连接到已知折点的所有未知折点
EN

Stack Overflow用户
提问于 2020-03-05 07:17:14
回答 1查看 40关注 0票数 0

我正在尝试使用C# Datastax CassandraCSharpDriver.Graph代码来获取通过边连接到已知顶点的所有未知顶点。

这段gremlin代码正确地返回了未知顶点和目标已知顶点的列表:

代码语言:javascript
代码运行次数:0
运行
复制
g.V().has("mything","key", "mykey")
.emit()
.repeat(outE("contains").inV()).valueMap(true)

我在C#中尝试了这样的遍历,但没有返回,我认为重复是无限的(或者非常慢):

代码语言:javascript
代码运行次数:0
运行
复制
g.V()
.Has("mything", "key", "mykey")
.Emit()
.Repeat(g.V()
.Has("mything", "key", "mykey")
.OutE("contains").InV())

我在C#中尝试像这样的遍历,但是编译器不接受'("query")',所以我不确定如何将遍历放在Repeat子句中:

代码语言:javascript
代码运行次数:0
运行
复制
g.V()
.Has("mything", "key", "mykey")
.As("query").Emit()
.Repeat(("query").OutE("contains").InV())

Repeat子句的诀窍是什么?或者,有没有更好的方法来让所有未知的顶点连接到C#中的已知顶点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 08:04:12

我认为您正在寻找匿名图遍历类Gremlin.Net.Process.Traversal.__

代码语言:javascript
代码运行次数:0
运行
复制
var graphResultSet = await session.ExecuteGraphAsync(g.V()
                .Has("mything", "key", "mykey").Emit()
                .Repeat(__.OutE("contains").InV())).ConfigureAwait(false);

我用这个查询运行了一个简单的代码片段(如下所示),并获得了以下控制台输出:

代码语言:javascript
代码运行次数:0
运行
复制
[label: mything; key: mykey]
[label: mything1; key: mykey15]
[label: mything1; key: mykey12]
[label: mything; key: mykey]
[label: mything1; key: mykey17]
[label: mything1; key: mykey16]
[label: mything1; key: mykey14]
[label: mything1; key: mykey13]
[label: mything1; key: mykey1]

代码片段:

代码语言:javascript
代码运行次数:0
运行
复制
        session.ExecuteGraph(new SimpleGraphStatement(
            "schema.propertyKey('key').Text().ifNotExists().create();" +
            "schema.edgeLabel('contains').multiple().ifNotExists().create();" +
            "schema.vertexLabel('mything').properties('key').ifNotExists().create();" +
            "schema.vertexLabel('mything1').properties('key').ifNotExists().create();" + 
            "schema.edgeLabel('contains').connection('mything', 'mything1').add();"));

        var g = DseGraph.Traversal(session);

        await session.ExecuteGraphAsync(g
                .AddV("mything").Property("key", "mykey").As("cp")
                .AddV("mything").Property("key", "mykey").As("cp1")
                .AddV("mything1").Property("key", "mykey1").As("cl")
                .AddV("mything1").Property("key", "mykey12").As("cl1")
                .AddV("mything1").Property("key", "mykey13").As("cl2")
                .AddV("mything1").Property("key", "mykey14").As("cl3")
                .AddV("mything1").Property("key", "mykey15").As("cl4")
                .AddV("mything1").Property("key", "mykey16").As("cl5")
                .AddV("mything1").Property("key", "mykey17").As("cl6")
                .AddE("contains").From("cp").To("cl")
                .AddE("contains").From("cp1").To("cl1")
                .AddE("contains").From("cp").To("cl2")
                .AddE("contains").From("cp").To("cl3")
                .AddE("contains").From("cp1").To("cl4")
                .AddE("contains").From("cp").To("cl5")
                .AddE("contains").From("cp").To("cl6"))
            .ConfigureAwait(false);

        var graphResultSet = await session.ExecuteGraphAsync(g.V()
            .Has("mything", "key", "mykey").Emit()
            .Repeat(__.OutE("contains").InV())).ConfigureAwait(false);

        var vertices = graphResultSet.Select(elem => elem.To<Vertex>()).ToList();

        Console.WriteLine(
            string.Join(
                Environment.NewLine,
                vertices.Select(v => $"[label: {v.Label}; key: {v.GetProperty("key").Value}]")));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60536093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档