gpt4 book ai didi

ruby-on-rails - NEO4j - Cypher - 事件源 - 多个左连接、数据透视表/交叉表,用于可选节点?

转载 作者:行者123 更新时间:2023-12-04 04:47:04 27 4
gpt4 key购买 nike

我如何在 cypher 中创建一个 this left join 的等价物,但为每个事件返回一行? (假设每个事件只有 1 个可选目标记录和一个可选源记录 - 两者都可以存在或不存在等)

person-----activity--+--> source (optional table, left join)
+--> target(optional table, left join)

当然,如果源和目标存在,我不想要两行,所以这将通过交叉表/数据透视表查询汇总,因此最后一行将是
person...activity...(optional source node)...(optional target node)   

我想带回人员、事件以及可选的源行和目标行(如果它们存在的话)——如果不存在,则只带回人员和事件。我想要每个事件一行。

请参阅图示例: http://console.neo4j.org/?id=rogg0w

这是我对如何实现这一目标的猜测
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)。上面的 Cypher 查询有什么问题?或者我必须从 cyper 获取人员和事件数据,然后通过代码单独查找节点,IMO,这将是一个很大的性能损失。

最佳答案

您可以使用逗号来指定模式的多个部分:

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

有道理吗?

关于ruby-on-rails - NEO4j - Cypher - 事件源 - 多个左连接、数据透视表/交叉表,用于可选节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18021021/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com