[英]OrientDB use result of subquery to search index
我正在使用OrientDb 2.1-rc4作為文檔數據庫。 我有一個MyClass
類,該類經常被多用途應用程序更新。 為了提高性能,我刪除了從State
類到MyClass
的鏈接,並添加了從MyClass
到State.
的鏈接和索引State.
為了獲取MyClass
所有實例,我需要獲取State
rids的列表,然后查詢索引。 該查詢使我擺脫了狀態。
SELECT DISTINCT(roles.views.states.@rid)
FROM #12:1
退貨
[["#14:0","#14:1"]]
該查詢在索引中找到正確的擺脫。
SELECT FROM index:MyClass.state
where key in [#14:0,#14:1]
當我將兩個查詢放在一起時。
SELECT FROM index:MWorkUnit.state
where key in (SELECT DISTINCT(roles.views.states.@rid) FROM #12:1)
我收到以下錯誤。
java.lang.ClassCastException:com.orientechnologies.orient.core.sql.query.OSQLSynchQuery無法轉換為java.util.List
如何讓OrientDB將子查詢視為擺脫列表?
編輯:不使用索引時此查詢有效。
SELECT FROM MWorkUnit
where state IN (SELECT expand(roles.views.states).@rid FROM #12:1)
這似乎是針對索引查詢的錯誤:子查詢未正確評估。 請您打開一個新的問題?
此解決方法應起作用:
SELECT FROM index:MWorkUnit.state
LET $list = (SELECT DISTINCT(roles.views.states.@rid) FROM #12:1)
where key in $list
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.