【发布时间】:2017-05-06 18:52:26
【问题描述】:
我找到了一个“朋友的朋友”遍历查询,可以满足我获取朋友的朋友的基本需求(friends of friend Query in ArangoDB 3.0)。我对其稍作修改,使其与文档中的“Knows_Graph”示例一起使用,并且我添加了一些额外的人员 (https://docs.arangodb.com/3.1/Manual/Graphs/)
我的查询使用 Dave 作为起点,并通过 Bob 和 Lucy 查找他的二年级朋友。该脚本工作正常,但我也希望它在查询结果中包含 1 级朋友(鲍勃和露西)。我可以通过将最小深度设置为 1 来做到这一点,但是如果我这样做,我不会区分 Bob 和 Lucy 的深度(参见 json 输出),所以我将无法在更大的图表上判断谁是 1 度和谁是二级
最小深度为 2 的示例代码
LET person = DOCUMENT("persons/@persons/dave")
LET foaf = (
FOR v IN 2..2 ANY person knows
RETURN v
)
RETURN MERGE(person, { foaf } )
示例使用“knows”边集合和“person”集合
如果我的最小深度为 1,最大深度为 2,那么这里是 json 输出。如您所见,bob 和 lucy 显示在与其他人相同的集合级别上。我想找到一种方法以某种方式将它们显示为第一级,而不会使查询过于复杂或导致性能问题。
[
{
"_id": "persons/dave",
"_key": "dave",
"_rev": "_U7wRsJG--_",
"name": "Dave",
"foaf": [
{
"_key": "lucy",
"_id": "persons/lucy",
"_rev": "_U8--wPq---",
"name": "Lucy"
},
{
"_key": "henry",
"_id": "persons/henry",
"_rev": "_U8-_FNa---",
"name": "Henry"
},
{
"_key": "bob",
"_id": "persons/bob",
"_rev": "_U7wRsJC--_",
"name": "Bob"
},
{
"_key": "charlie",
"_id": "persons/charlie",
"_rev": "_U7wRsJG---",
"name": "Charlie"
},
{
"_key": "alice",
"_id": "persons/alice",
"_rev": "_U7wRsJC---",
"name": "Alice"
},
{
"_key": "eve",
"_id": "persons/eve",
"_rev": "_U7wRsJG--A",
"name": "Eve"
}
]
}
]
【问题讨论】:
标签: graph social-networking arangodb