neo4j - 在 Neo4j 中使用 Cypher 匹配嵌套列表中的对象
问题描述
我有一个组件列表列表。对于每个组件列表,我需要将 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
解决方案
我想通了,如果这是完美的答案,我想知道,但它做了我想要的
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 ["{'","'.join(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 names AS list, n.from_week AS from_week ORDER BY from_week DESC
RETURN list, collect(from_week)[0] AS weeks
推荐阅读
- android - 将 GIF 下载为文件并获取内容 URI
- mysql - 外部引用具有不能唯一的单个列的复合键
- email - 电子邮件意图未打开
- parsing - 在 tree-sitter 语法中,如何以非关联方式匹配未分隔的值列表?
- jquery - jQuery-UI 自动完成 - SyntaxError:意外的标识符
- database - AWS RDS MariaDB 无缘无故在简单的 alter table 上消耗了 300GB
- r - 回归:结合不同年份的数据集
- python - 名称“eyes_roi”未定义,OpenCV 和 Python
- flutter - 如何创建按钮以采取类似 TextInputAction.done 的操作
- angular - 与 Angular 11 的动态 [routerLink] 绑定