Ruby on rails NEO4j-Cypher-活动提要-多个左连接,透视表/交叉表,用于可选节点?
我如何在cypher中使用this left join,但为每个活动返回一行?(假设每个活动只有一个可选目标记录和一个可选源记录-两者都可以存在或不存在,等等) 当然,如果存在一个源和目标,我不需要两行,因此这将通过交叉表/透视表查询汇总,因此最后一行将是Ruby on rails NEO4j-Cypher-活动提要-多个左连接,透视表/交叉表,用于可选节点?,ruby-on-rails,neo4j,cypher,Ruby On Rails,Neo4j,Cypher,我如何在cypher中使用this left join,但为每个活动返回一行?(假设每个活动只有一个可选目标记录和一个可选源记录-两者都可以存在或不存在,等等) 当然,如果存在一个源和目标,我不需要两行,因此这将通过交叉表/透视表查询汇总,因此最后一行将是 person...activity...(optional source node)...(optional target node) 我想返回person、activity,如果源行和目标行存在,还可以选择返回它们——如果不存在,则
person...activity...(optional source node)...(optional target node)
我想返回person、activity,如果源行和目标行存在,还可以选择返回它们——如果不存在,则只返回person和activity。。我希望每个活动一行
请参见下面的图表示例:
以下是我对如何实现这一目标的猜测
start n=node(1)
match n-[act_rel]->activity-[?sourcerel]-(source)
with n
match n-[act_rel]->activity-[?targetrel]-(target)
return n, activity, source.description! as description, target.description! as target_description
基本上,我想为每个活动在一行上带回一个人的活动列表,其中包含可选的源节点和目标节点——这可以通过Cyhper单独实现吗?(使用ROR/REST)。上面的密码查询有什么问题?或者我必须从cyper中获取人员和活动数据,然后通过代码逐个查找节点,这对性能有很大影响。您可以使用逗号指定模式的多个部分:
start n=node(1)
match n-[:act_rel]->activity-[?:sourcerel]-source, activity-[?:targetrel]-target
return n, activity, source.description as description, target.description as target_description
有意义吗?啊。。因此,这些不必全部链接在一个匹配中,而是可以由注释分隔的多个描述。。非常感谢。请参见中的图表示例
start n=node(1)
match n-[:act_rel]->activity-[?:sourcerel]-source, activity-[?:targetrel]-target
return n, activity, source.description as description, target.description as target_description