特定のプロパティを持つノードに関連しないノードを除外しようとしている状況があります。たとえば、すべての人を取得するクエリがあるとしますが、茶色の毛皮の犬を飼っている人だけに絞り込みたいとします。私がやりたいことは次のようなものです:
//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 では許可されていません。
(「WHERE」を使用しているときに「MATCH」を参照するのは面白いですが、何でも)。したがって、この方法でノードのプロパティを参照することはできません。他にどのようなオプションがありますか? MATCH 句を追加することで、必要なものをエミュレートできました...
START person=node(1,2,3)
MATCH person-[:has]->dog
WHERE dog.furColor! = "Brown"
RETURN person
...しかし、追加のパスを一致させてから、それらを再度フィルタリングする必要があるのは奇妙で非効率的です。別の方法はありますか?