【发布时间】:2020-03-03 16:11:58
【问题描述】:
我有一个组件列表。对于每个组件列表,我需要将 pno12 与每个组件匹配并找到与该组件关联的结构周,然后返回每个组件列表中最高的结构周。到目前为止,这是我的查询,但它展开了
with [['000063', '000752', 'R78000', '000854', '000869', '000273', 'P0010', '71700'],
['71700', '000273', '000869', '000063', '000752', 'P0010', 'R78000', '000854']] as names_list
unwind names_list as names
MATCH (p:PNO12{name:"2021110536L4120D110"})
OPTIONAL MATCH (p)-[:OFFERS]->(n)
WHERE (n.name IN names)
AND NOT (n.from_week IS NULL OR n.to_week IS NULL)
AND NOT (n.from_week = "000000" OR n.to_week = "000000")
WITH COLLECT(n)+COLLECT(p) AS cmps
UNWIND cmps as c
RETURN c.from_week
ORDER BY c.from_week DESC
LIMIT 1
但这给了我 1 个结果
c.from_week
"202045"
而我需要嵌套列表中每个列表的最新结构周(这就是我排序的原因)。有人对我如何实现这一点有任何提示吗?我最初的想法是 unwind 会为每个内部列表单独运行匹配,但显然情况并非如此。我是新手 :)
我不知道这是否是一个更好的尝试,但它仍然不起作用,但可能会帮助您更好地了解我正在尝试做什么
with [['000063', '000752', 'R78000', '000854', '000869', '000273', 'P0010', '71700'], ['71700', '000273', '000869', '000063', '000752', 'P0010', 'R78000', '000854'] ] as names_list
unwind names_list as names
match (p:pno12{name:"2021110536L4120D110"})
OPTIONAL MATCH (p)-[:OFFERS]->(n)
WHERE (n.name IN names)
AND NOT (n.from_week IS NULL OR n.to_week IS NULL)
AND NOT (n.from_week = "000000" OR n.to_week = "000000")
with collect(n.from_week) as weeks
return names, weeks
order by weeks desc limit 1
【问题讨论】:
-
你能解释一下这是什么意思吗:“我需要在嵌套列表中为每个列表构建一周”?此外,您指定了
LIMIT 1,因此您自然只会得到一个结果。 -
是的,我使用限制一来获取最近一周,但我需要以某种方式对每个子列表重复此操作
标签: neo4j cypher graph-databases