我對Orient SQL查詢有一個語義問題。Orient SQL - 使用WHERE篩選結果集?
採取例如這個非常簡單的曲線圖:
v(#12:1 User) --> e(#13:1 FriendOf) --> v(#12:2 User)
換句話說,給定的用戶與除掉#12:1是朋友與除掉#12另一用戶:2。
要獲得用戶#12的朋友:1,人們可能會在東方SQL表達這種像這樣:
SELECT EXPAND(both("FriendOf")) FROM #12:1
該查詢將返回由用戶與擺脫#12的結果列表:2。
現在可以說,我想通過一個額外的標準來篩選結果列表,就像說一個數值(「時代」):
SELECT EXPAND(both("FriendOf")) FROM #12:1 WHERE age >= 10
上面的查詢將篩選當前頂點(#12:1 ),而不是結果集。這是有道理的,但有沒有辦法將過濾器應用到EXPAND(兩者(「FriendOf」))結果而不是當前頂點?我知道我可以用小鬼做到這一點,像這樣:
SELECT EXPAND(gremlin('current.both("FriendOf").has("age",T.gte,10)')) FROM #12:1
但上面似乎沒有利用索引(至少不是當我問它來解釋)。對於非常大的數據集,這是有問題的。
那麼有沒有適當的方法來將WHERE語句應用於結果數據集?
謝謝!
這似乎也工作,但不使用索引: SELECT EXPAND(both(「FriendOf」)[age> = 10])FROM#12:1 – nightrise