【发布时间】:2013-01-02 04:04:37
【问题描述】:
我正在将我的复杂用户数据库迁移到 Neo4j,在该数据库中,用户可以加入多个团队之一,彼此成为朋友等等。在 RDBMS 中执行此操作既痛苦又缓慢,但使用 Neo4j 非常简单且令人兴奋。 :)
我希望有办法查询
- 一跳的关系和
- 另一种关系是 2 跳远
来自同一个查询。
START n=node:myIndex(user='345')
MATCH n-[:IS_FRIEND|ON_TEAM*2]-m
RETURN DISTINCT m;
原因是,作为朋友的用户彼此相距一条边,但由团队链接的用户是通过该团队节点链接的,因此他们相距两条边。此查询执行 IS_FRIEND*2 和 ON_TEAM*2,得到队友(是的)和朋友的朋友(嘘)。
Cypher 中是否有一种简洁的方法可以在单个查询中获取不同长度的关系?
【问题讨论】:
-
Joseph,你有没有机会在 console.neo4j.org 上做一个小例子?