![](/img/trans.png)
[英]Gremlin query to find values of vertices which are common between 2 different vertices
[英]Gremlin join multiple vertices values
我需要一些幫助,因為我對圖形數據庫很陌生。
我在我的 DSE Graph 上運行這個 Gremlin 查詢:
g.V('user:589435392:512').out('events').inE('events')
圖表視圖返回
但是原始 JSON 返回:
{
"id": "{out_vertex={member_id=512, community_id=589435392, ~label=user}, local_id=d2e29e60-5fc2-11e6-87aa-8d7f17e3c204, in_vertex={member_id=0, community_id=100599424, ~label=events}, ~type=events}",
"label": "events",
"type": "edge",
"inVLabel": "events",
"outVLabel": "user",
"inV": "events:100599424:0",
"outV": "user:589435392:512"
},
{
"id": "{out_vertex={member_id=1, community_id=1205145984, ~label=user}, local_id=7c838fd0-6327-11e6-87aa-8d7f17e3c204, in_vertex={member_id=0, community_id=100599424, ~label=events}, ~type=events}",
"label": "events",
"type": "edge",
"inVLabel": "events",
"outVLabel": "user",
"inV": "events:100599424:0",
"outV": "user:1205145984:1"
}
我需要這樣的東西:
{
"event": {"some infos about this event"},
"users": [{"user1"}, {"user2"},...]
}
如何實現 JSON 輸出,顯示用戶的所有事件以及事件的所有相關用戶?
你應該試試這個查詢:
g.V('user:589435392:512').out('events').
project('event','users').by().by(__.in('events').fold())
您可能想查看包含此項的數據模型。 看起來好像用戶是頂點,事件是邊。 您是否考慮過將事件創建為邊緣?
根據現有的 User --Event--> User 模型幫助使用 gremlin 語法
gV().outE('Events') // 將為您提供事件的所有邊緣,包括指向邊緣和指向邊緣的頂點
在您編寫的查詢中,您正在使用 out() 這相當於使用 outE().inV()
當描述是事件頂點的屬性時,以下查詢應該有效:
g.V().has('user','name','user1').out().as('event').in().as('user').select('event','user').by('description').by('name')
==>{event=some infos about this event, user=user1}
==>{event=some infos about this event, user=user2}
除此之外,我不會用事件作為邊緣的標簽,而是選擇更具描述性的像triggeredEvent,hadEvent,或者類似的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.