首页 > 解决方案 > 在 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

标签: neo4jcyphergraph-databases

解决方案


我想通了,如果这是完美的答案,我想知道,但它做了我想要的

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

推荐阅读