0

根据daniel-luppitz提供的这个答案,我正在尝试在 Azure CosmosDb 中克隆一个顶点,但出现以下错误:

编译错误:无法绑定到方法“属性”,参数类型为:(GraphTraversal,GraphTraversal)

查询:

     IGraphTraversalSource g = coreClient.CreateTraversalSource();
     ITraversal query = g.V(new PartitionKeyIdPair(pk, id)).As("source")
                            .AddV("clone").Property("partitionKey", pk).As("clone")
                            .SideEffect(__.Select<User>("source").Properties<String>().As("p").Select<User>("clone")
.Property(__.Select<object>("p").Key(), __.Select<string>("p").Value<string>()))

如果我更改键和值遍历

.Property(__.Select<object>("p").Key(), __.Select<string>("p").Value<string>()

为常数值,则查询有效

.Property("test", "test")

知道如何在 Azure CosmosDb 中实现这一点吗?

4

1 回答 1

1

我不确定 Cosmos DB 目前支持哪个 TinkerPop 版本,但在浏览完文档后,我会说它接近 3.2.5。3.2 行不支持动态键/值,这是在 3.3 行的某处添加的。

因此,在 Cosmos DB 中执行此操作的唯一方法是拆分查询。获取您需要的值,然后根据收集到的值提交后续查询。显然,这不会很好地执行可能会显着增加您的使用成本,但我想不出使用旧 Gremlin 版本的另一种方法(考虑到 lambda 是 Cosmos DB 中不支持的另一件事)。

于 2019-07-28T18:25:17.757 回答