簡體   English   中英

根據頂點屬性在Tinkerpop3中創建邊?

[英]Creating edges in Tinkerpop3 based on vertex properties?

我正在使用TinkerPop3 Java將信息從另一個數據庫遷移到Tinkerpop數據庫。 我在單個頂點中存儲了大量ID,我需要將其轉換為兩個頂點之間的邊。

假設我運行以下代碼來創建Modern玩具圖,並添加josh的屬性“ friend”,以及其朋友“ marko”的相應名稱。

graph = TinkerFactory.createModern()
g = graph.traversal()
g.V().has("name","josh").property("friend","marko")

我想要的是一個查詢,該查詢將以編程方式找到具有“ friend”屬性的所有頂點,找到名稱匹配的相應頂點,並在它們之間創建一個標記為“ friends”的邊。 理想情況下,這將是一個查詢,因為我必須掃描大量的頂點。

以下查詢將查找具有朋友的頂點以及這些朋友的名字,但是我不知道如何在不將搜索分為多個查詢的情況下找到具有匹配名稱的頂點。

g.V().has("friend").as("a").values("friend").as("b").select("a","b")

謝謝!!

我發現以下工作:

g.V().has("friend").as("x").
V().has("name").where(eq("x")).by("name").by("friend").
as("y").
addE("friends").from("x").to("y")

從此處找到的答案中得到啟發: https : //groups.google.com/forum/#!msg/gremlin-users/l-Xtknn3Loo/0SljkNFiDQAJ;context-place=forum/gremlin-users

說明:該查詢正在查找一系列帶有朋友的節點,並將其標記為“ x”。 然后,它將查看所​​有具有名稱的節點,如果它們匹配則將它們標記為“ y”-也就是說,如果它們的名稱與“ x”的好友屬性匹配。 (這就是兩個.by()語句所做的事情)。 然后在它們之間創建一條邊緣。

暫無
暫無

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

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