【问题标题】:How to sort AND limit Noe4j result using Gremlin?如何使用 Gremlin 对 Noe4j 结果进行排序和限制?
【发布时间】:2012-05-09 04:29:56
【问题描述】:

这是您可以使用 Gremlin 对 Neo4j 图表中的结果进行排序(排序)的方法:

g.v(id).out('knows').sort{it.name}

g.v(id).out('knows').sort{a,b -> a.name <=> b.name}

这是如何使用偏移/跳过和限制来限制结果:

g.v(id).out('knows')[0..9]

但是如果你将排序和限制结合起来

g.v(id).out('knows').sort{it.name}[0..9]

它会抛出一个错误...

javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList$ListItr.getAt() is applicable for argument types: (groovy.lang.IntRange) values: [0..9]
Possible solutions: getAt(java.lang.String), getAt(int), next(), mean(), set(java.lang.Object), putAt(java.lang.String, java.lang.Object)

【问题讨论】:

    标签: sorting graph neo4j gremlin


    【解决方案1】:

    我花了一段时间才发现像 sort 这样的原生 Groovy 方法不返回管道,而是迭代器、可迭代对象等。因此,将这些对象之一转换回管道流你需要使用_()

    g.v(id).out('knows').sort{it.name}._()[0..9]
    

    【讨论】:

      【解决方案2】:

      我有类似的问题,但 except(sth).unique() 和限制 [0..5] 。 就我而言:

      错误:

      except(xxx).unique()[0..5]
      

      工作正常:

      except(sth).unique().findAll()[0..5]
      

      也适用于 sort{}:

      .unique().findAll().sort{it.sth}[0..5]
      

      (Alexei Tenitski 的回答也不错)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-14
        • 1970-01-01
        • 2019-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多