2

我正在尝试使用 Gremlin 控制台将顶点(以及最终的边)添加到本地 Cosmos DB 图。我一直在关注本教程。但是,每当我尝试添加顶点时,都会收到有关分区键的错误。

我的查询:

g.addV('person').property('firstName', 'Thomas').property('lastName', 'Andersen').property('age', 44).property('userid', 1).property('pk', 'pk')

错误:

ActivityId : cd07f7be-d824-40fa-8137-0f2726a9c26d
ExceptionType : GraphRuntimeException
ExceptionMessage :
Gremlin Query Execution Error: Cannot add a vertex where the partition key property has value 'null'.
Source : Microsoft.Azure.Cosmos.Gremlin.Core
GremlinRequestId : cd07f7be-d824-40fa-8137-0f2726a9c26d
Context : graphcompute
Scope : graphcomp-execquery
GraphInterOpStatusCode : GraphRuntimeError
HResult : 0x80131500
Type ':help' or ':h' for help.
Display stack trace? [yN]

如何修复我的查询并插入数据?

4

4 回答 4

1

我没有 CosmosDB 测试环境,但是有一个公共示例项目:

看起来您必须添加一个pk属性(这很可能意味着“分区键”,并且应该以某种方式进行配置)。

于 2019-09-19T18:12:20.983 回答
1

我混淆了分区键标签和值。扭转这些解决了我的问题。

于 2019-09-20T18:27:56.187 回答
1

将两个值混合在一起时犯了同样的错误。所以当你添加你的天蓝色数据库时,你必须指定一个分区键,我选择了'/client';

现在,当我进行查询时,我必须添加此属性:

.property('client', 'pk')

-- 第一个值必须是键本身,第二个值是 'pk',是 'partitionKey' 的缩写;然后在您的文档中,您必须添加一个属性:

client: 'TESTCLIENTID'

但同样,其中很多是关于你的“分区”策略的基础,这是你必须为每个集合预先决定的东西,来自 Azure 的这段视频非常详细地解释了事情。

于 2019-10-28T09:53:38.893 回答
1

您不需要在 g.addV 中添加分区键,我查看了“快速启动”选项卡在门户中为您创建的内容,即“graphdb/mycollection”数据库/集合。您可以创建自己的工作正常而无需在添加顶点时指定分区键...只需指定分区键

/_partitionKey

并选中复选框

My partition key is larger than 100 bytes

无论如何,这为我解决了。

于 2019-12-10T16:53:31.293 回答