[英]TinkerPop not getting correct count type with traversal
此處討論了使用 Gremlin 進行分頁,並參考了此博客文章,其中提供了有關該主題的更多信息。 這些資源應該可以幫助您制定分頁策略。
您在查詢BulkSet
時提出了這個問題,所以它與我引用的答案並不完全重復,所以我會盡量為您回答這么多。 BulkSet
允許在 TinkerPop 中進行重要的遍歷優化,這有助於減少 object 傳播,從而減少特定查詢的 memory 要求。 它通過保存遍歷器 object 及其計數來做到這一點,其中計數是 object 已添加到BulkSet
的次數。 調用size()
或longSize()
(后者返回long
而前者返回int
)將返回計數的總和,因此返回對象的“正確”或實際計數。 調用uniqueSize()
將返回集合的實際大小,這將是其中的唯一對象。
如果你想要BulkSet
的大小,你只需要count()
它:
gt.V().hasLabel("user").sideEffect(__.count().store("total"))
.order().by("name", Order.desc)
.range(0, 10).fold().as("list")
.select("list","total")
.by().
.by(count(local))
也就是說,我認為您的遍歷並沒有真正做到您想要的。 sideEffect()
只是計算當前遍歷器,它將簡單地返回“1”,然后將“1”存儲在列表“total”中。 至少這是我在 TinkerGraph 中看到的:
gremlin> g.V().hasLabel("person").sideEffect(count().store("total")).range(0,1).fold().as('list').select('list','total').by().by(count(local))
==>[list:[v[1]],total:1]
gremlin> g.V().hasLabel("person").sideEffect(count().store("total")).range(0,10).fold().as('list').select('list','total').by().by(count(local))
==>[list:[v[1],v[2],v[4],v[6]],total:4]
有趣的是,JanusGraph 以某種方式為您提供了 114 而不是 10 的“總數”。 我沒想到。 如果它是后來“修復”的“錯誤”,我會考慮避免依賴該“功能”。 相反,請考慮我提供的帖子並從中尋找靈感。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.