我的文档集 dc1 和 dc2 和边缘集合 ec1 和 ec2 。我使用 dc1 和 ec1 创建图表 g1 ,将 dc2 和 ec2 用于图表的 G2
我执行了一些搜索请求,并从集合 dc2 中收集了来自 dc1 和 d2 的文档 d1 的结果集。
我想在图表查看器中将搜索结果集表示为2个图表,以便能够以图形方式表示 d1 与集合 dc1 中的其他文档之间的可能关系,以便 d2 以及来自 dc2 的文档。
我可以在当前版本的ArangoDB中进行吗?你知道任何现有的其他应用程序(服务,foxx应用程序)吗?
现在,作为肮脏的技巧,我创建了第三个文档集 DC ,其中包含来自 dc1 和 dc2 的集合的文档以及相应的边缘集合 EC 包含来自 ec1 和 ec2 两个集合的边缘,将新节点搜索结果添加到 DC 中与 EC 的关系代表发现 dc1 和 dc2 ,然后基于 DC 和 EC < / strong>从顶点搜索结果开始。它让我探讨发现的结果与相应的初始集合中的文档之间的任何关系。
我认为创建我自己的foxx应用程序(可能还有时间收集或其他东西),如果还不存在的话。
答案 0 :(得分:3)
目前无法直接在图表查看器中显示图形遍历的结果。
然而,您可以将遍历的结果复制到临时图形中,然后可以显示该图形。我们将使用City graph
执行此操作作为一个例子,我们从柏林开始,并且只想查看不是首都的城市。使用此过滤器的原始AQL遍历将是:
FOR v, e IN 1..1 OUTBOUND 'germanCity/Berlin' GRAPH 'routeplanner'
FILTER v.isCapital == false
RETURN {City: v, Highway: e}
我们现在创建临时图:
db._createEdgeCollection('temporaryEdgeCollection', {volatile: true})
db._create('temporaryVertexCollection', {volatile: true})
db._graphs.save({
"_key": "tempgraph",
"orphanCollections" : [ ],
"edgeDefinitions" : [
{
"collection": "temporaryEdgeCollection",
"from": ["temporaryVertexCollection"],
"to": ["temporaryVertexCollection"]
}
]
})
现在我们编辑上面的查询以实际将图形复制到我们上面创建的临时集合中。挑战在于我们实际上也需要startnode,因为我们想要显示它。
我们可能不会对同一个集合执行多个INSERT
语句,因此我们需要将顶点重新组合成一个也包含startvertex的列表:
db._query(`
LET startVertex = DOCUMENT('germanCity/Berlin')
LET traversalResult = (
FOR v, e IN 1..1 OUTBOUND startVertex GRAPH 'routeplanner'
FILTER v.isCapital == false
LET newEdge = MERGE(e, {
_from: CONCAT(@tv, '/', SPLIT(e._from, '/')[1]),
_to: CONCAT(@tv, '/', SPLIT(e._to, '/')[1])
})
LET newV = UNSET(v, '_id')
RETURN {v: newV, e: newEdge}
)
LET x=(
FOR vertex in PUSH(traversalResult[*].v, UNSET(startVertex, '_id'))
INSERT vertex INTO temporaryVertexCollection)
LET y=(
FOR edge in traversalResult[*].e
INSERT edge INTO temporaryEdgeCollection)
RETURN 1
`,
{tv : 'temporaryVertexCollection'})
现在您可以实际点击Web界面中的tempgraph,可视化实际结果。
请注意,我们使用了volatile集合,因此我们不会为此浪费磁盘空间。