【问题标题】:display top 2 individual nodes using gremlin使用 gremlin 显示前 2 个单独的节点
【发布时间】:2013-09-23 11:32:20
【问题描述】:

假设我有节点/边:

A --> M  300
A --> B  100
A --> C  200
B --> D  300
B --> E  200
B --> L  1300

我将源节点作为A,B然后如何显示以下按数量排序并限制为2的输出

A --> M 300
A --> C 200

B --> L 1300
B --> D  300 

【问题讨论】:

    标签: neo4j gremlin


    【解决方案1】:

    我假设您知道如何过滤顶点“A”和“B”并开始遍历:

    gremlin> g = new TinkerGraph()
    ==>tinkergraph[vertices:0 edges:0]
    ... 
    gremlin> g.v("A","B").outE.groupBy{it.outV.next()}{[it.amount,it.inV.next()]}.cap.next()
    ==>v[A]=[[200, v[C]], [100, v[B]], [300, v[M]]]
    ==>v[B]=[[300, v[D]], [1300, v[L]], [200, v[E]]]
    

    所以上面的内容为您提供了所有“A”和“B”元素及其“数量”(不确定该数字在您的域中代表什么)。完成后,只需使用“reduce”闭包对列表中的前两项进行排序和弹出:

    gremlin> g.v("A","B").outE.groupBy{it.outV.next()}{[it.amount,it.inV.next()]}{it.sort{a,b->b[0]<=>a[0]}[0..<2]}.cap.next()
    ==>v[A]=[[300, v[M]], [200, v[C]]]
    ==>v[B]=[[1300, v[L]], [300, v[D]]]
    

    【讨论】:

    • 是的,它正在工作。 thanx .:) 仅当假设 v[A] 有 4 个 outV() 而 v[B] 有 2 个 outV() 并且如果我通过 [0..
    • 我想你可以做一个it.sort{a,b-&gt;b[0]&lt;=&gt;a[0]}.take(2)
    猜你喜欢
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多