如何在灰线中按边值对折点进行排序 [英] How sort vertices by edge values in Gremlin
本文介绍了如何在灰线中按边值对折点进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给出air-routes图,假设我想获得所有可能的一次中途停留路线,如下所示:
[home] --distance--> [stopover] --distance--> [destination]
其中[Home]、[stopover]和[Destination]是机场节点,每个节点都有一个表示机场代码的属性‘code’;距离是赋予连接两个机场节点的每条边的整数权重。
我如何编写一个查询来获取[Home]、[stopover]和[Destination]的机场代码,从而使结果按如下方式排序:
- [家庭]机场代码按字母顺序排序。
- 对于每组[家庭]机场,[中途停留]机场代码按[家庭]和[中途停留](升序)之间的距离排序。
- 排序1和2后,[目的地]机场编码按[中途停留]到[目的地]的距离排序。
(注:如果[家]和[目的地]是同一个机场并不重要)
推荐答案
您可以通过group
和嵌套by
调制来完成此操作。
g.V().
group().
by('code').
by(
outE('route').
order().by('dist').
inV().
group().
by('code').
by(
outE('route').
order().by('dist').
inV().
values('code').fold())).
unfold()
结果如下:
1. {'SHH': {'WAA': ['KTS', 'SHH', 'OME'], 'OME': ['TLA', 'WMO', 'KTS', 'GLV', 'ELI', 'TNC', 'WAA', 'WBB', 'SHH', 'SKK', 'KKA', 'UNK', 'SVA', 'OTZ', 'GAM', 'ANC']}}
2. {'KWN': {'BET': ['WNA', 'KWT', 'ATT', 'KUK', 'TLT', 'EEK', 'WTL', 'KKH', 'KWN', 'KLG', 'MLL', 'KWK', 'PQS', 'CYF', 'KPN', 'NME', 'OOK', 'GNU', 'VAK', 'SCM', 'HPB', 'EMK', 'ANC'], 'EEK': ['KWN', 'BET'], 'TOG': ['KWN']}}
3. {'NUI': {'SCC': ['NUI', 'BTI', 'BRW', 'FAI', 'ANC'], 'BRW': ['ATK', 'AIN', 'NUI', 'PIZ', 'SCC', 'FAI', 'ANC']}}
4. {'PSG': {'JNU': ['HNH', 'GST', 'HNS', 'SGY', 'SIT', 'KAE', 'PSG', 'YAK', 'KTN', 'ANC', 'SEA'], 'WRG': ['PSG', 'KTN']}}
5. {'PIP': {'UGB': ['PTH']}}
.
.
.
这篇关于如何在灰线中按边值对折点进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文