Neo4J Cypher-如何对列表列表执行IN子句操作

Neo4J Cypher-如何对列表列表执行IN子句操作,neo4j,cypher,Neo4j,Cypher,在Neo4J中,对于简单的In子句检查,只需执行以下操作: itemList=[i1、i2、i3] 项目列表中的项目 但是如何对列表列表执行IN操作,例如 itemList1=[i1,i2,i3],itemList2=[i4,i5,i2],itemList3=[i1,i7,i8] itemLists=[itemList1、itemList2、itemList3] 项目列表中的项目 我需要结合案例使用该操作,例如 CASE WHEN i1 IN itemLists则为true您的CASE/WHEN

在Neo4J中,对于简单的In子句检查,只需执行以下操作:

itemList=[i1、i2、i3]

项目列表中的项目 但是如何对列表列表执行IN操作,例如

itemList1=[i1,i2,i3],itemList2=[i4,i5,i2],itemList3=[i1,i7,i8] itemLists=[itemList1、itemList2、itemList3] 项目列表中的项目 我需要结合案例使用该操作,例如

CASE WHEN i1 IN itemLists则为true

您的CASE/WHEN/IN解决方案有效,但您也可以尝试展平阵列,然后在中使用

示例:x in reduces=[],list in itemLists | s+list

您的案例/when/in解决方案有效,但您也可以尝试展平阵列,然后在中使用


示例:x in reduces=[],list in itemLists | s+list

如果需要,您可以将这些列表添加到一起

WITH 'i1' AS tester 
, ['i1','i2','i3'] AS list1
, ['i4','i5','i6'] AS list2
, ['i7','i8','i9'] AS list3
RETURN CASE 
  WHEN tester IN (list1 + list2 + list3) THEN true
  ELSE false
END AS in_list

如果你愿意的话,你可以把这些列表加在一起

WITH 'i1' AS tester 
, ['i1','i2','i3'] AS list1
, ['i4','i5','i6'] AS list2
, ['i7','i8','i9'] AS list3
RETURN CASE 
  WHEN tester IN (list1 + list2 + list3) THEN true
  ELSE false
END AS in_list
根据需要,您可以为此使用任意和所有列表谓词

因此,要检查当前列表中是否有值,可以使用:

any(list in itemLists WHERE i1 IN list)
根据需要,您可以为此使用任意和所有列表谓词

因此,要检查当前列表中是否有值,可以使用:

any(list in itemLists WHERE i1 IN list)

谢谢这同样有效,但我同意InverseFalcon的答案。谢谢。这也行得通,但我还是用了InverseFalcon的答案。InverseFalcon和logisma的答案更符合我的需要,但谢谢,InverseFalcon和logisma的答案更符合我的需要,但无论如何,感谢您也可以在apoc.coll.flattenestedList中使用您也可以在apoc.coll.flattenestedList中使用