Вы даже не должны искать в БД, если нужная комбинация id
и type
находится в p_list
.
Это должно работать (и эффективно избегать поиска, если не нужно):
WITH
[{id: '16', type: 'p1', value: 2}, {id: '3', type: 'p2', value: 1}, {id: '54', type: 'p1', value: 3}, {id: '16', type: 'p1', value: 5}, {id: '1143', type: 'p1', value: 4}, {id: '18', type: 'test', value: 4}] as p_list,
'18' AS id,
'test' AS type
WHERE NONE(p IN p_list WHERE p.id = id AND p.type = type)
MATCH (o:Item) where o.id = id and o.type = type
RETURN o
Если тест WHERE
не пройден, то последующий MATCH
даже не предпринимается.
Для простого повторного использования этого запроса вы можете опустить предложение WITH
и передать p_list
, id
и type
как параметры .