簡體   English   中英

OrientDB-獲取2級網絡

[英]OrientDB - Get network at level 2

我正在為一個大型的專業社交網絡工作,我們開始檢查OrientDB是否符合“社交圖譜”方面的要求。 到目前為止,我們已經成功部署了一個由10個節點組成的集群,設置了備份以及將所有數據從MongoDB還原並填充到OrientDB並沒有出現重大問題。 我們的數據模型是:

  • 頂點:
    • 輪廓
    • 公司
    • 工作
    • 出版物
    • ...
  • 邊緣:
    • 關注 :一個個人資料可以關注另一個個人資料或公司
    • 應用 :一個配置文件可以應用到工作
    • 已發布 :一個個人資料可以在網絡上發布一些出版物
    • ...

我想知道的是:

  1. 如何獲得深度為1或2連接到一個給定資料中的所有的人,我想是這樣SELECT out('Followed').out('Followed') as friend FROM 14:4 ,其中14:4是配置對象。 不幸的是,它給了我個人資料和公司,因為個人資料可以“跟隨”公司。 如何過濾以僅獲取個人檔案? 我已經嘗試SELECT out('Followed').out('Followed') as friend FROM 14:4 where @class = 'Profile'但它不起作用:(我應該有多個邊緣類( SELECT out('Followed').out('Followed') as friend FROM 14:4 where @class = 'Profile' )簡化查詢?
  2. 當個人資料使用另一個社交網絡(Facebook,Google等)創建帳戶時,我們將存儲他現有的聯系人並將其與我們的數據庫匹配,因此我們可以說“由於Facebook,個人資料A已連接到個人資料B”。 我應該如何在OrientDB中表示呢? 邊緣上的屬性還是專用的邊緣類?
  3. 最后一個是:如何獲得兩個配置文件之間的最短路徑?

非常感謝。

1)您可以嘗試

SELECT FROM (SELECT expand(out('Followed').out('Followed')) as friend FROM 14:4) Where @class='Profile'

2)我認為邊緣的屬性(謝謝)更好

3)您可以使用shortestPath函數( http://www.orientechnologies.com/docs/last/orientdb.wiki/SQL-Functions.html ):

例:

select shortestPath(#8:32, #8:10, 'BOTH')

暫無
暫無

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

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