我可能需要修改我的答案,因爲我可能需要你正在努力實現(如@邁克爾還要求)什麼更多的細節,但如果你認爲你的問題是next()
,然後考慮以下幾點:
user = g.v(42);
g.idx('comparisons')[[id:Neo4jTokens.QUERY_HEADER + '*']]
.filter{it.out('COMPARED_VALUE1').in('VOTED').in('VOTES').next().equals(user)}.count();
首先,注意上面,你的封過濾器可以立即降低到(這將產生同樣的錯誤,當然)。考慮到過濾器關閉,你假設當你使用next()
時,用戶頂點將從管道中流出。情況可能並非如此。因此,我會重新寫一個過濾器封口:
user = g.v(42);
g.idx('comparisons')[[id:Neo4jTokens.QUERY_HEADER + '*']].filter{
def p = it.out('COMPARED_VALUE1').in('VOTED').in('VOTES')
p.hasNext() ? p.next().equals(user) : false
}.count();
這應該會解決你的問題就在那裏因爲你只需要在管道p
評估的第一項假設這是你有效地什麼在做之前。我想知道,如果你不能簡單地使用except/retain pattern這裏得到答案,因爲它是少了幾分令人費解:
user = g.v(42);
g.idx('comparisons')[[id:Neo4jTokens.QUERY_HEADER + '*']]
.out('COMPARED_VALUE1').in('VOTED').in('VOTES').retain([user])
.count();
希望的東西在這裏把你在正確的軌道,以你的答案上。
你想達到什麼目的? –