 # Cypher's filter is not supported

I have e problem with 'filter'. It is no supported .

Query is a part from "GraphGist - Information Flow Through a Network"

##### Query 4
``````// Find all unique, simple paths from one city to another
MATCH p=(:City { name: "Tokyo" })-[:BACKBONE_TO*]-(:City { name: "Chicago" })
WHERE all(c IN nodes(p) WHERE 1=length(filter(m IN nodes(p) WHERE m=c)))
RETURN DISTINCT extract(n IN nodes(p) | n.name) AS Path, length(p) AS Length
``````

## Filter is no longer supported. Please use list comprehension instead (line 2, column 40 (offset: 118)) "WHERE all(c IN nodes(p) WHERE 1=length(filter(m IN nodes(p) WHERE m=c)))"

How to transform it to working query ?

Hello @ilko.k.v You must use a comprehension list:

``````// Find all unique, simple paths from one city to another
MATCH p=(:City {name: "Tokyo"})-[:BACKBONE_TO*]-(:City {name: "Chicago"})
WHERE all(c IN nodes(p) WHERE 1=size([m IN nodes(p) WHERE m=c]))
RETURN DISTINCT [n IN nodes(p) | n.name] AS Path, length(p) AS Length
``````

Regards,
Cobra

I try with

MATCH p=(:City { name: "Tokyo" })-[:BACKBONE_TO*]-(:City { name: "Chicago" })
WHERE all(c IN nodes(p) WHERE 1=length(RETURN[m IN nodes(p) WHERE m=c]))
RETURN DISTINCT extract(n IN nodes(p) | n.name) AS Path, length(p) AS Length

But return error:
Invalid input 'WHERE': expected
"OR"
"XOR"
"AND"
"=" ...

There is no `extract` in the query I gave you. I also replaced it with a comprehension list.

Error is coming from "WHERE 1="

Why is there a `RETURN` in your `WHERE` clause?

1 Like

Thank you Cobra Working

MATCH p=(:City { name: "Tokyo" })-[:BACKBONE_TO*]-(:City { name: "Chicago" })
WHERE all(c IN nodes(p) WHERE 1=size([m IN nodes(p) WHERE m=c]))
RETURN DISTINCT [n IN nodes(p) | n.name] AS Path, length(p) AS Length

1 Like

The Graph Gist Example should be updated now. Thanks for raising it.