我找到了一個「朋友的朋友」遍歷查詢,它滿足了我朋友朋友的基本需求(friends of friend Query in ArangoDB 3.0)。我已經修改了它稍微使之與文檔中找到「的Knows_Graph」比如工作,我已經添加了一些額外的人(https://docs.arangodb.com/3.1/Manual/Graphs/)圖 - 顯示朋友(和第一學位朋友)的朋友
我的查詢使用戴夫爲出發點,並查找他的第二學位朋友通過鮑勃和露西。該腳本工作正常,但我也希望它包括第一學位的朋友(鮑勃和露西)的查詢結果。我可以通過將最小深度設置爲1來完成此操作,但是如果我這樣做,我不會區分Bob和Lucy的深度(請參閱json輸出),所以我無法告訴一個更大的圖,誰是第二度
示例代碼爲2
LET person = DOCUMENT("persons/@persons/dave")
LET foaf = (
FOR v IN 2..2 ANY person knows
RETURN v
)
RETURN MERGE(person, { foaf })
分鐘深度的示例使用「知道」邊緣收集和「人」收集
這裏是JSON輸出,如果我有一分鐘深度爲1,最大深度爲2.正如你可以看到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"
}
]
}
]
感謝您的回答。不幸的是,我的圖形圖像最初並沒有顯示「亨利」是露西的二級朋友。我已經更新了原始圖像。我想知道2件事。隨着你的查詢,它顯示了我的深度,這很棒,但是我怎麼能顯示哪些朋友屬於Bob,哪些朋友屬於Lucy?其次,Eve是Bob和Lucy的第二學位朋友。無論如何表明這一點?基本上我想展示所有的二級好友,但是向正在請求的用戶展示他們有哪些共同的好朋友(有時它會像上面那樣多) – Dkong
我更新了我的答案。 – mpv1989
謝謝。這給了我一個很好的方向。 – Dkong