我有以下超简单图:
我想做的是:
>选择名为firstQuestion的问题文档中存在属性的所有问题,其值为true.
>通过with_options类型的出站边缘选择与问题相关的任何选项
以下查询有效,但感觉必须有更好的方法来检查边缘类型而不使用字符串操作 – 特别是连接操作我用来通过将其连接到我想要的边缘类型的键来重新创建边缘_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}
最佳答案 我们目前正在使用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}