图表 - 显示朋友的朋友(和一级朋友)

时间:2017-05-06 18:52:26

标签: graph social-networking arangodb

我找到了一个“朋友的朋友”遍历查询,它满足了我获取朋友的朋友的基本需求(friends of friend Query in ArangoDB 3.0)。我稍微修改了它以使其与文档中的“The Knows_Graph”示例一起使用,并且我添加了一些额外的人(https://docs.arangodb.com/3.1/Manual/Graphs/

enter image description here

我的查询以Dave为起点,通过Bob和Lucy寻找他的二级朋友。该脚本工作正常,但我也希望它在查询结果中包含1度朋友(bob和lucy)。我可以通过将最小深度设置为1来做到这一点,但是如果我这样做,我没有区分鲍勃和露西的深度(参见json输出),所以我不能告诉更大的图表谁是第一学位和谁是第二学位

最小深度为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"
      }
    ]
  }
]

0 个答案:

没有答案