Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何过滤父节点,然后过滤子节点,而不让父节点受子节点过滤的影响?Neo4j 3.5_Neo4j_Cypher - Fatal编程技术网

如何过滤父节点,然后过滤子节点,而不让父节点受子节点过滤的影响?Neo4j 3.5

如何过滤父节点,然后过滤子节点,而不让父节点受子节点过滤的影响?Neo4j 3.5,neo4j,cypher,Neo4j,Cypher,我有一组作者节点。Author节点是多个Book节点的单亲 步骤:1)我想按姓名筛选作者。(例如author.name包含“e”) 步骤:2)一旦我有了这个过滤过的作者列表,我想按姓名过滤这些作者的每一本书。(例如,book.name包含“the”) 期望输出:(让我们想象一下奥斯卡·王尔德没有写任何带有“the”的书) 我的问题是,在第(2)步之后,所有没有写有“the”但的书的作者的名字中都有一个“e”,他们被抛弃了,就像(在本例中)奥斯卡·王尔德一样 我试过: MATCH (author

我有一组
作者
节点。
Author
节点是多个
Book
节点的单亲

步骤:1)我想按姓名筛选作者。(例如author.name包含“e”)

步骤:2)一旦我有了这个过滤过的作者列表,我想按姓名过滤这些作者的每一本书。(例如,book.name包含“the”)

期望输出:(让我们想象一下奥斯卡·王尔德没有写任何带有“the”的书)

我的问题是,在第(2)步之后,所有没有写有“the”但的书的作者的名字中都有一个“e”,他们被抛弃了,就像(在本例中)奥斯卡·王尔德一样

我试过:

MATCH (author:Author) WHERE (author.name CONTAINS 'e')
WITH author

MATCH (book)<-[:WROTE]-(author) WHERE (book.name CONTAINS 'the')

RETURN author, book
MATCH(author:author)其中(author.name包含“e”)
与作者

匹配(书籍)您可以对书籍使用
可选匹配
,因此如果找不到适合
作者的书籍
,仍然可以返回
作者

例如:

MATCH (author:Author) WHERE author.name CONTAINS 'e'
OPTIONAL MATCH (book)<-[:WROTE]-(author) WHERE book.name CONTAINS 'the'
RETURN author, COLLECT(book) AS books;
匹配(author:author),其中author.name包含“e”
选配(书)
MATCH (author:Author) WHERE author.name CONTAINS 'e'
OPTIONAL MATCH (book)<-[:WROTE]-(author) WHERE book.name CONTAINS 'the'
RETURN author, COLLECT(book) AS books;