我有一个包含3种标签类型的neo4j db
name)
和两种关系
每个父母都使用一个应用程序,db包含应用程序与爸爸妈妈的时间和日期之间的连接,比如:(妈妈)--打开->(时间)与爸爸标签和密切关系相同。
有多个爸爸妈妈在使用这个应用程序,我想把爸爸和妈妈联系起来。,爸爸和妈妈在同一时间使用这个应用程序,这意味着如果爸爸和妈妈有相同的时间戳(不多也不少),他们是连接的。
现在您无法计算这些连接,因为mom可能有4个连接到时间戳,但只与爸爸共享一个时间戳,而爸爸也有4个与时间戳的连接。
我试着做了那个查询:
//按名称匹配(d:dad {unique_name:“joe”)->(dad_ts:Timestamp)
集合(Dad_ts)为dad_ts_list
//获取连接到所有爸爸时间戳的所有妈妈
Match (m:mom)->(mom_ts:Timestamp)
其中所有( dad_ts_list中的ts),其中(妈妈)->(Ts))
返回m
现在我发现这段代码有两个问题
所以我试了一下psodocode
Timestamps
。
所以我尝试了这样的方法:
//叫爸爸的名字
匹配(d:爸爸(unique_name:“joe”)->(dad_ts:Timestamp)
With ( dad_ts )为dad_ts_list,dad_ts
//获取所有连接到至少一个父亲时间戳的妈妈
Match (m:mom)->(dad_ts)
Match (m)->(mom_ts:Timestamp)
//备选案文A
dad_ts.value <> mom_ts.value
//它如何给我所有的mom_ts灌输了dad_ts。我认为这是因为它是日期时间类型,所以我尝试将它更改为string,但仍然无法工作。
//备选案文B
集合(Mom_ts)为mom_ts_list,dad_ts_list,m
//尝试筛选列表
过滤器(在mom_ts_list中t,在dad_ts_list中t)作为not_dad_ts
//,这也返回了注入dad_ts的所有时间戳
//不确定到底什么时候才能得到没有连接的妈妈,因为我无法创建错误时间戳的时间戳列表,但我认为应该是这样的。
(M)->(ts:时间戳)
其中无(t在not_dad_ts中ts.value = t.value)
返回m
因此,如果您能够帮助更正查询/您有更好的想法得到只完全连接到dad_ts的mom节点,那就太好了。
发布于 2022-01-14 16:07:24
请尝试以下查询:
//get a dad by name Match (d:dad {unique_name:"joe")-->(dad_ts:Timestamp)
With collect(dad_ts) as dad_ts_list
//get all the mom that connected to the all of dad Timestamp
Match (m:mom)->(mom_ts:Timestamp)
Where all(dad_ts in dad_ts_list where dad_ts = mom_ts)
Return m因此,与检查(mom)->(ts)不同,您可以检查dad_ts是否与mom_ts相同。如果有用的话请告诉我。如果在某一点上失败,请给我们样本数据。谢谢。
https://stackoverflow.com/questions/70687998
复制相似问题