簡體   English   中英

使用 Gremlin 控制台將頂點插入本地 Cosmos DB 模擬器

[英]Insert vertex into local Cosmos DB Emulator using Gremlin Console

我正在嘗試使用 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]

如何修復我的查詢並插入數據?

我沒有 CosmosDB 測試環境,但是有一個公共示例項目:

看起來您必須添加一個pk屬性(這很可能意味着“分區鍵”,並且應該可以以某種方式進行配置)。

我混淆了分區鍵標簽和值。 扭轉這些解決了我的問題。

是否犯了將兩個值混合在一起的相同錯誤。 因此,當您添加 azure 數據庫時,您必須指定一個分區鍵,我選擇了“/client”;

現在,當我進行查詢時,我必須添加此屬性:

.property('client', 'pk')

-- 第一個值必須是密鑰本身,第二個值是 'pk',是 'partitionKey' 的縮寫; 然后在您的文檔中,您必須添加一個屬性:

client: 'TESTCLIENTID'

但同樣,其中很多都是關於你的“分區”策略所基於的,這是你必須為每個集合預先決定的東西,來自 Azure 的這個視頻更詳細地解釋了一些事情,非常好。

您不需要在 g.addV 中添加分區鍵,我查看了“快速啟動”選項卡在門戶中為您創建的內容,即“graphdb/mycollection”數據庫/集合。 您可以創建自己的,在添加頂點時無需指定分區鍵即可正常工作...只需指定分區鍵

/_partitionKey

並選中復選框

My partition key is larger than 100 bytes

無論如何,這為我解決了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM