簡體   English   中英

OrientDB SQL:包含連接頂點的rids

[英]OrientDB SQL: Include rids from connected vertices

我有一個頂點“ A”連接到頂點“ B”和“ C”。

我想用B和C的記錄ID的附加列表查詢A。

屬性外觀的示例:

A:
{
   "@rid": "#1:0",
   "property": "ValueForA"
}

B:
{
   "@rid": "#2:0",
   "property": "ValueForB"
}

C:
{
   "@rid": "#2:1",
   "property": "ValueForC"
}

我想要一個查詢A,該查詢給了我:

{
    "@rid": "#1:0",
    "property": "ValueForA",
    "connected": ["#2:0", "#2:1"]
}

我希望僅憑投影就能做到這一點。 它適用於B和C中的任何自定義字段,但對於@rid,我可以獲得一個鏈接(為什么會有這種不一致?)。

我試過了:

SELECT @rid, *, out().@rid as connected FROM #1:0

這確實給了我我想要的東西,但列表中的標記是指向記錄的鏈接,而不僅僅是標記。

SELECT @rid, *, out().@rid.asString() as connected FROM #1:0

這使:

{
    "@rid": "#1:0",
    "property": "ValueForA",
    "connected": "[#2:0, #2:1]"
}

其中,connected屬性只是一個字符串。

@rid和其他屬性不一致的原因可能是(希望如此)。 如我所寫,如果@rid改為“ id”,則第一個示例可以正常工作。 無論如何,我想知道一種簡單的方法,因為我覺得這樣做應該很容易。

更新

在上面的示例中將id添加為屬性示例會產生誤導,因為它可能以某種方式暗示它是唯一的(盡管我從未說過),因此我將其刪除。 我只是添加它們以使3條記錄分開。 但是,record-id被用作唯一ID來分隔上面的頂點,因此無法使用記錄的任何屬性。 為了進一步說明,記錄可以具有任意屬性。 不僅是上面給出的示例。

再次,第一個問題是是否可以使用投影?

進一步的評論:如果我將每個記錄的屬性“ rid”保存為與@rid完全相同的記錄ID,我會很容易做到這一點,這真的很奇怪。 我為什么要這樣做(我不會那樣做)以便使其易於使用。

UPDATE2

我還希望能夠一次定位多個頂點並為每個頂點附加連接。 我已經使用投影對許多屬性(而不是@rid)進行了此操作。

查詢像鏈接一樣返回@rid的事實是很正常的,這是一種可行的方法。 可能是這樣的:

select id, property, $a from #21:0
let $a = (select out() from #21:0 where $parent.current.id = id)

這是輸出:

在此處輸入圖片說明

希望能幫助到你。

問候

暫無
暫無

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

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