У меня есть ситуация, когда я пытаюсь отфильтровать узлы, которые не связаны с узлами с определенным свойством. Например, у меня есть запрос, который дает мне всех людей, но я хочу отфильтровать только те, у которых есть собаки с коричневой шерстью. Я хотел бы сделать что-то вроде этого:
//For simplicity's sake, assume nodes 1,2,3 are the potentials I care about
START person=node(1,2,3)
WHERE person-[:has]->(dog{furColor:"Brown"}) // <-- would be nice to use
RETURN person
Однако это не работает. Парсер явно говорит мне:
Свойства элементов шаблона не разрешены в ПОИСКПОЗ.
(Забавно, что он ссылается на «ПОИСКПОЗ», когда я использую «ГДЕ», но что угодно). Таким образом, вы не можете ссылаться на свойства узлов таким образом. Какие еще варианты у меня есть? Я смог эмулировать то, что хочу, добавив предложение MATCH...
START person=node(1,2,3)
MATCH person-[:has]->dog
WHERE dog.furColor! = "Brown"
RETURN person
... но мне кажется странным и неэффективным, что я должен СООТВЕТСТВОВАТЬ дополнительным путям, а затем снова отфильтровывать их. Есть ли другой способ?