亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在python中實現:檢查頂點是否存在,如果不存在,則創建一個新頂點

如何在python中實現:檢查頂點是否存在,如果不存在,則創建一個新頂點

臨摹微笑 2022-06-14 10:54:00
我想創建一個海王星數據庫,并將數據轉儲到它。我將歷史數據從 DynamoDB 下載到 S3,這些文件為 csv 格式。這些 csv 中的標題如下:~id, someproperties:String, ~label然后,我需要通過 lambda 實現對這個 neptune db 的實時流式傳輸,在 lambda 函數中,我會檢查一個頂點(或邊)是否存在,如果存在,我將更新頂點(或邊),否則我創建一個新的。在python中,我的實現是這樣的:g.V().hasLabel('Event').has(T.id, event['Id']).fold().coalesce(unfold(), addV('Event').property(T.id, event['Id'])).property(Cardinality.single, 'State', event['State']).property('sourceData', event['sourceData']).next()在這里我有一些問題:在實時流中,我需要查詢是否已經存在帶有id的頂點,所以我需要查詢歷史數據的節點,那么可以 has(T.id, event['Id'])這樣做嗎?還是我應該只使用 has(id, event['Id'])or has("id", event['Id'])?我正在使用g.V().has('Event', T.id, event['Id'])而不是 g.V().hasLabel('Event').has(T.id, event['Id']),但得到了類似的錯誤cannot local NeptuneGraphTraversal.has()。這兩個查詢是一樣的嗎?
查看完整描述

1 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

這是您對 Gremlin 有疑問的三個部分:


g.V().has(T.id, "some-id")

g.V().has(id, "some-id")

g.V().has("id", "some-id")

前兩個將返回與id成員相同的結果T(作為一種風格,Gremlin 用戶通常靜態導入id,以便為簡潔起見以這種方式引用它)。最后一次遍歷與前兩次不同,因為String它作為一個值引用了一個名為“id”的標準屬性鍵。一般來說,TinkerPop 會建議您不要使用像“id”或“label”這樣的屬性鍵名,因為它可能會導致錯誤和混淆T.


至于你的問題的第二部分圍繞:


g.V().has('Event', T.id, event['Id']) 

g.V().hasLabel('Event').has(T.id, event['Id'])

正如 Kelvin 指出的那樣,您不能傳遞T.id到 3 元形式,因為步驟簽名只允許 a在第二個位置。允許那里也沒有意義,因為第一個參數已經說明了它并引用了實際的圖形元素標識符。如果您知道該值,那么您就不會首先指定 ,因為已經唯一標識了元素。你會做的。has()StringTT.labelT.idT.labelT.idg.V(event['Id'])


查看完整回答
反對 回復 2022-06-14
  • 1 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號