0

更复杂的 Cypher 查询的结果是节点列表和关系列表,其中一个列表的每个位置/行在内容方面与另一个列表的相同位置/行相关。该关系仅由两个列表中的位置组成,相应元素之间没有图表。

列表

因为我需要通过节点的属性过滤两个列表,所以我将两个列表组合在一个地图中,并尝试通过列表理解来实现我的意图。

MATCH
  <complex query>
WITH collect(labelA) AS nodesList, collect(relation) AS relationList
WITH {nodes:nodesList, relations:relationList} AS data
WITH [x IN data WHERE x.nodes.attributName <> „text“] AS filteredData
RETURN filteredData;

可以理解的是,这会导致第 5 行出现以下错误。

Neo.ClientError.Statement.TypeError:类型不匹配:预期地图但为 List{(4538063)、(4538063)、(4538063)}

从技术角度来看,当我x.nodes在一行中展开该部分时,它会起作用,但是我正在失去对第二个表的依赖关系。那么如何通过第一个列表的节点属性同步过滤两个列表呢?

4

1 回答 1

1

您有一个配对列表,因此您应该收集它们,然后将它们过滤为单个项目。

我的意思的例子...

MATCH
  <complex query>
WITH COLLECT({node:labelA, relation:relation}) AS data
// or you can do
// WITH COLLECT([labelA, relation]) AS data
WITH filter(x IN data WHERE x.node.attributName <> "text") AS filteredData
RETURN filteredData;
于 2018-11-28T15:15:06.110 回答