Neo4j Cypher查询以获取用户源

dojqjjoe  于 2022-11-05  发布在  其他
关注(0)|答案(3)|浏览(164)

假设我的项目是Facebook,我想显示一个包含我的状态更新和我朋友的状态更新的提要。
这里有关系;

  • 用户知道用户
  • 用户UPDATES_STATUS状态

这是我获取朋友状态更新的方式;

START me = node(1) MATCH me-[:KNOWS]-()-[:UPDATES_STATUS]->friendsStatusUpdates RETURN friendsStatusUpdates

这就是我如何获得我自己的状态更新;

START me = node(1) MATCH me-[:UPDATES_STATUS]->myStatusUpdates RETURN myStatusUpdates

这两个查询都可以正常工作,但我需要一个将这两个查询组合起来的查询。

ohtdti5x

ohtdti5x1#

这是我从Google网上论坛得到的答案;

START me = node(1) MATCH me-[:KNOWS*0..1]-()-[:UPDATES_STATUS]->statusUpdate RETURN DISTINCT statusUpdate

我唯一要做的就是将*0..1深度指示器添加到关系中,以便获得0或1级别的深度结果。
编辑:我不得不添加DISTINCT,因为没有它,查询包括0级节点2次,这将导致重复。
使用WITH语句返回相同结果的备选查询;

START me = node(1) 
MATCH me-[:KNOWS*0..1]-friend
WITH DISTINCT friend
MATCH friend-[:UPDATES_STATUS]->statusUpdate 
RETURN DISTINCT statusUpdate
dfuffjeb

dfuffjeb2#

板条箱一个自己的用户节点到自己的关系比查询是START me = node(1)MATCH me-[:KNOWS|他自己]-()-[:UPDATES_STATUS]-〉朋友状态更新返回朋友状态更新

rekjcdws

rekjcdws3#

http://docs.neo4j.org/chunked/milestone/introduction-pattern.html

START me = node(1) 
MATCH me-[:UPDATES_STATUS*1..2|KNOWS]-myStatusUpdates 
RETURN myStatusUpdates

如果*1..2无法与|命令一起使用,请执行以下操作:

START me = node(1) 
MATCH friendsStatusUpdates2-[?:UPDATES_STATUS]-me-[:KNOWS]-()-[:UPDATES_STATUS]->friendsStatusUpdates 
RETURN distinct myStatusUpdates,friendsStatusUpdates2

只需使用一些聚合函数编辑RETURN语句,这样每行就有一个状态

相关问题