簡體   English   中英

使用 Gremlin,如何像從外頂點返回屬性一樣從內頂點返回屬性? (不是數組)

[英]How, with Gremlin, to return properties from in-vertices the same as I do from out-vertices? (Not as arrays)

我試圖從一組標記的頂點開始遍歷,然后通過特定類型的邊連接所有頂點,然后從那里返回這些頂點的屬性作為對象。 我可以對從同一組標記頂點開始的一些外頂點做同樣的事情,但沒有問題,但是當我嘗試使用一些內頂點時會出現“提供的遍歷器未映射到值:”錯誤。

我找到了一種解決方法,但它並不理想,因為它將所需的屬性值作為長度為 1 的數組返回。

以下是我如何使用 out-vertices 成功完成非常相似的任務: gV().hasLabel('TestCenter').project('address').by(out('physical').project('street').by(values('street1')))

這會返回類似的東西

==>{address={street=561 PLACE DE CEDARE}}
==>{address={street=370 N BLACK STATION AVE}}

這很棒!

然后我嘗試使用一些頂點進行相同類型的查詢,如下所示: gV().hasLabel('TestCenter').project('host').by(__.in('hosts').project('aCode').by(values('code')))並得到上述錯誤。

我能夠找到的解決方法是將 .fold() 添加到最終的“by”中,如下所示: gV().hasLabel('TestCenter').project('host').by(__.in('hosts').project('aCode').by(values('code')).fold())但是我的回答是這樣的

==>{host=[{aCode=7387}]}
==>{host=[{aCode=9160}]}

我想要的是一個看起來像這樣的響應:

==>{host={aCode=4325}}
==>{host={aCode=1234}}

(注意:我不確定這是否相關,但我正在將 Gremlin 連接到 Neptune 數據庫實例)

在我看來,從上面的錯誤和您的解決方法來看,並非您的所有“測試中心”都具有來自“主機”類型的邊緣。 使用project ,必須映射有效值。

你可以做兩件事:

1)確保在project返回一個值:

g.V().hasLabel('TestCenter').project('host')
     .by(coalesce(__.in('hosts').project('aCode').by(values('code')), constant('empty')))

2)過濾器確實值:

g.V().hasLabel('TestCenter').where(__.in('hosts'))
.project('host').by(__.in('hosts').project('aCode').by(values('code')))

暫無
暫無

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

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