我有以下超简单图:
我想做的是:
以下查询有效,但感觉必须有一种更好的方法来检查边缘类型而不使用字符串操作 - 特别是用于通过将边缘类型连接到具有边缘类型的键来重新创建边缘_id值的连接操作我想 - 这是检查边缘类型的最佳方法吗?
FOR question IN questions
FILTER question.firstQuestion == true
let options =
(FOR v, e IN 1..1 OUTBOUND question._id GRAPH 'mygraph'
FILTER CONCAT('with_options/', e._key) == e._id
RETURN v)
RETURN {question: question, options: options}
答案 0 :(得分:2)
我们目前正在使用ArangoDB 2.8.1为此特定目的引入IS_SAME_COLLECTION。 在这种情况下,DOCUMENT函数也值得一提。
FOR question IN questions
FILTER question.firstQuestion == true
LET options = (FOR v, e IN 1..1 OUTBOUND question._id GRAPH 'mygraph'
FILTER IS_SAME_COLLECTION('with_options', e._id)
RETURN v)
RETURN {question: question, options: options}
但是,在这种特殊情况下,最好的解决方案是不使用命名图形界面,而是首先使用specify the list of edge collections that should be concerned by the traversal:
FOR question IN questions
FILTER question.firstQuestion == true
LET options = (FOR v, e IN 1..1 OUTBOUND question._id with_options RETURN v)
RETURN {question: question, options: options}