В Neo4J для простой проверки предложения IN можно просто сделать, например:
itemList = [i1, i2, i3]
но как выполнить операцию IN над списком списков, например,
Мне нужно использовать эту операцию совместно с CASE WHEN Например,
СЛУЧАЙ, КОГДА i1 В ItemLists THEN true
Для этого можно использовать предикаты списков any() и all(), в зависимости от того, что вам нужно.
any()
all()
Итак, чтобы проверить, есть ли значение в любом из присутствующих списков, вы можете использовать:
any(list in itemLists WHERE i1 IN list)
Ваше решение case / when / in работает, но вы также можете попытаться сгладить массив и затем использовать in.
case / when / in
in
Пример: x in reduce(s = [], list IN itemLists | s + list)
x in reduce(s = [], 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