Я могу выполнить этот запрос в консоли Datastax Studio и получить результат в виде дерева (хотя он искажен json, когда все данные возвращаются в ключах вместо значений).
g.V().has("mything","key", "mykey")
.emit()
.repeat(outE("contains").inV())
.dedup()
.tree()
.by(
group()
.by(label)
.by(
valueMap()
.unfold()
.group()
.by(select(keys))
.by(select(values).unfold())
)
.unfold()
.unfold()
)
Результат консоли выглядит следующим образом (обратите внимание на странный формат json с данными в клавишах json?):
{
"mystuff={dynamicproperties={stuff}, key=mykey}": {
"contains={}": {
"astuff={dynamicproperties=stuff, key=mykey}": {},
"bstuff={dynamicproperties={stuff}, key=mykey}": {},
"container={key=mykey}": {
"contains={}": {
"thing={key=mykey}": {
"contains={}": {
"cstuff={dynamicproperties={stuff}, key=mykey}": {}
}
}
}
}
}
}
}
Однако когда я его запускаю как SimpleGraphStatement в Gremlin. NET с использованием CassandraCSharpGraph выдает это исключение: "java.util.HashMap$Node cannot be cast to org.apache.tinkerpop.gremlin.structure.Element"
Это код C#, по которому я выполняю запрос:
var graphResultSet = cassandraGraphProvider.Session.ExecuteGraph(new SimpleGraphStatement(query));
Я в состоянии выполнить оператор вплоть до строки .dedup () и получить вершины в graphResultSet, но добавив нижеприведенный код дерева, когда он начинает выдавать ошибку.
Я использую CassandraCSharpDriver. График 2.1, CassandraCSharpDriver 3.14, Гремлин. Net 3.2.9. На сервере запущены dse cassandra 5.1.14 и gremlin 3.2.11.
В чем заключается хитрость при выполнении запроса дерева в CassandraCSharpDriver? Любые идеи о том, что я мог бы попробовать дальше?