从Azure Cosmos DB Graph API示例开始: https://github.com/Azure-Samples/azure-cosmos-db-graph-gremlindotnet-getting-started
我感兴趣的是使用 Gremlin.NET (该示例使用版本3.2.7)使用 C#类执行查询,而不是编写字符串查询并使用gremlinClient.SubmitAsync<dynamic>("...")
方法。
但是当我执行以下代码时,我得到了一个
Gremlin.Net.Driver.Connection.d__14`1.MoveNext()
中的NullReferenceException
致电.Next()
var gremlinServer = new GremlinServer(hostname, port, enableSsl: true,
username: "/dbs/" + database + "/colls/" + collection,
password: authKey);
var graph = new Graph();
var g = graph.Traversal().WithRemote(new DriverRemoteConnection(new GremlinClient(gremlinServer)));
var vertex = g.V().HasLabel("person").Next();
Console.WriteLine(vertex);
不幸的是,我没有找到任何关于如何使用 Gremlin.NET 的文档。如果你们中的某些人可以指点我“开始”,那就太好了。
修改 Azure Cosmos DB Data Explorer的查询结果如下所示:
[
{
"id": "thomas",
"label": "person",
"type": "vertex",
"properties": {
"firstName": [
{
"id": "9015b584-375f-4005-af00-f49d6e2d6b94",
"value": "Thomas"
}
],
"age": [
{
"id": "c2300d19-12a0-474a-9405-eb89466bcbb3",
"value": 44
}
]
},
"_isRoot": true,
"_isFixedPosition": true
}
]
答案 0 :(得分:5)
这不能与Cosmos DB一起使用的原因很简单,Cosmos DB不支持Gremlin Bytecode,但是当您使用遍历API时,它会发送到服务器。 因此,您目前唯一的选择是将查询真正写为字符串,然后将这些查询字符串发送到服务器。
关于文档:Gremlin遍历可以用不同的语言编写(有关Gremlin的更多信息,请参阅The Gremlin Graph Traversal Machine and Language)。因此the TinkerPop docs也适用于Gremlin.Net,the Gremlin.Net part of the documentation仅解释了Gremlin.Net特有的方面。