0

在我的情況下有兩個頂點標籤:用戶,賣家。DSE圖形兩個頂點標籤的相同頂點部分?

註冊用戶使用自定義頂點ID創建新的頂點:

g.addV(label,'User', 'id', '123456789', 'name', 'User1').next(); 

當用戶登錄,如果他註冊一個新的業務,那麼他成爲賣家。 現在我想要相同的頂點ID是賣方標籤的一部分,這是不可能的。

如果我使用賣家標籤創建新頂點,則存儲在用戶頂點上的整個圖形(hasmobile,hasaddress)將無法與賣家頂點訪問。

有沒有辦法在DSE圖中實現這一點?

回答

1

TinkerPop和DSE Graph的語義(以及大多數圖形實現 - 使用Neo4j是我能想到的唯一例外)不允許頂點具有多個標籤。您可能會認爲這是爲什麼您在SQL數據庫的多個表中不存在行的原因。

有多種方法可以解決這個問題。做一個「人」的頂點(而不是「用戶」或「賣方」),則:

  1. 推斷他們是否從與它們相關的數據的某些方面的在「用戶」或「賣方」。也許這是通過「isSeller」或「isUser」屬性完成的。然後,你將查詢賣家與

    g.V().hasLabel('Person').has('isSeller',true)

  2. 創建,你的「人」的頂點連接到「用戶」頂點或「賣方」頂點子類型的系統。然後,你就可以做的東西,如「查找用戶,只有當他們是賣家」與

    g.V().hasLabel('User').has('someid','12345'). filter(__.in('isAPerson').out('isASeller'))

相關問題