![](/img/trans.png)
[英]Neptune, Python, Gremlin: Update a property in a graph vertex with an array of values
[英]Error creating graph in Neptune using Gremlin from Go
我正在使用 Gremlin 創建/更新(更新插入)圖表。 我正在使用 Go、Gremlin go 驅動程序 Gremlingo 和圖形數據庫 AWS Neptune。
我從 Neptune 返回以下錯誤:
2023/01/27 12:44:59 Error occurred during operation gremlinServerWSProtocol.responseHandler(): 'E0502: error in read loop, error message '{code:243 message:{"code":"InvalidParameterException","requestId":"12de5fcc-16f0-4ac3-a64a-7f0c0068eff6","detailedMessage":"The provided traverser does not map to a value: v[0ac2fa61-8182-ec95-3fb2-8946dae540de][NeptuneVertex]->[SelectOneStep(last,e,null)][DefaultGraphTraversal] parent[[NeptuneGraphQueryStep(Vertex), NeptuneTraverserConverterStep, NeptuneMemoryTrackerStep, FoldStep, CoalesceStep([[UnfoldStep, AddPropertyStep({value=[{\"mimeType\":\"application/vnd.adobe.hz.express+dcx\",\"docModelVersion\":95,\"draftDocumentModels\":\"\"}], key=[value]})], [AddVertexStep({component_id=[DocumentProperties], label=[Component], asset_id=[urn:aaid:sc:VA6C2:004ba5d7-5e1c-47a6-824a-0d0822e6415b], entity_id=[#root], version=[#head], value=[{\"mimeType\":\"application/vnd.adobe.hz.express+dcx\",\"docModelVersion\":95,\"draftDocumentModels\":\"\"}]})]]), NoOpBarrierStep(null), AddEdgeStep({~to=[[SelectOneStep(last,e,null)]], label=[ATTACHED_TO]}), NoneStep]]"} attributes:map[]}'. statusCode: 243'
在執行以下查詢時。
func (n NeptuneGremlinGraph) Put(assetID string, version string, records []les.DeltaEditRecord) error {
g := gremlin.Traversal_().WithRemote(n.connection)
anonT := gremlin.T__
for _, r := range records {
promise := g.V().HasLabel("Entity").
Has("asset_id", assetID).
Has("version", version).
Has("entity_id", r.EntityID).
Fold().
Coalesce(anonT.Unfold(),
anonT.AddV("Entity").
Property("asset_id", assetID).
Property("version", version).
Property("entity_id", r.EntityID)).
As("e").
V().HasLabel("Component").
Has("asset_id", assetID).
Has("version", version).
Has("entity_id", r.EntityID).
Has("component_id", r.ComponentID).
Fold().
Coalesce(anonT.Unfold().
Property("value", r.Value),
anonT.AddV("Component").
Property("asset_id", assetID).
Property("version", version).
Property("entity_id", r.EntityID).
Property("component_id", r.ComponentID).
Property("value", r.Value)).
AddE("ATTACHED_TO").To("e").Iterate()
err := <-promise
if err != nil {
return err
}
}
return nil
}
我不確定哪里出了問題,也無法完全解釋錯誤消息。 任何人都可以看到我的查詢有什么問題嗎?
Fold
后, As
步驟中的任何先前標簽都將丟失。 我懷疑這里發生的是AddE
步驟失敗,因為To('e')
沒有解析。 嘗試將As('e')
更改為Store('e')
並查看是否有幫助。 您還需要將To
更改為To(Cap('e').Unfold())
這是一個使用 Gremlin 控制台的簡單示例
gremlin> g.V(1).store('e').V(2).addE('test').to(cap('e').unfold())
==>e[61286][2-test->1]
正如我們在這個問題中討論的那樣,新的MergeV
和MergeE
步驟將在這種情況下提供很大幫助。 當您將多個Fold
... Coalesce
模式鏈接在一起時,您只會遇到剛剛遇到的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.