Fad*_*adi 1 filter neo4j cypher
我想比较两个列表,以便在第一个列表中找到不在第二个列表中的值并返回它们。提前感谢代码返回的人:不再支持过滤器是否有其他方法可以做到这一点
MATCH (cu:Customer{name: "myCustomer"})-[pu:PURCHASED]->(o:Order)-[*]->(cat:Category)
MATCH (b:Book)-[:IS_a]->(cat)
WITH COLLECT(DISTINCT pu.ISBN) AS purchasedbooks,COLLECT(DISTINCT b.ISBN) AS booksFromTheSameCategory
RETURN FILTER( n IN booksFromTheSameCategory WHERE NOT n IN purchasedbooks ) as listC
Run Code Online (Sandbox Code Playgroud)
您可以使用列表推导语法而不是过时的filter
函数:
MATCH (cu:Customer{name: "myCustomer"})-[pu:PURCHASED]->(o:Order)-[*]->(cat:Category)<-[:IS_a]-(b:Book)
WITH COLLECT(DISTINCT pu.ISBN) AS purchasedbooks, COLLECT(DISTINCT b.ISBN) AS booksFromTheSameCategory
RETURN [n IN booksFromTheSameCategory WHERE NOT n IN purchasedbooks] as listC
Run Code Online (Sandbox Code Playgroud)
您可以在此页面上查看 Cypher 语法更改文档。