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
cypher neo4j查询中的WHERE NOT()_Neo4j_Cypher - Fatal编程技术网

cypher neo4j查询中的WHERE NOT()

cypher neo4j查询中的WHERE NOT(),neo4j,cypher,Neo4j,Cypher,我遇到了一个简单的密码查询问题。查询是: MATCH (u:user { google_id : 'example_user' })--(rm:room)--(a:area), (c:category { name : 'culture:Yoruba' })--(o:object) WHERE NOT (a-[:CONTAINS]->o) RETURN DISTINCT o.id “WHERE NOT…”被忽略,我将返回传入的节点:包含来自区域节点的关系。如果我去掉“NOT”

我遇到了一个简单的密码查询问题。查询是:

MATCH (u:user { google_id : 'example_user' })--(rm:room)--(a:area),
    (c:category { name : 'culture:Yoruba' })--(o:object) 
WHERE NOT (a-[:CONTAINS]->o) 
RETURN DISTINCT o.id
“WHERE NOT…”被忽略,我将返回传入的节点:包含来自区域节点的关系。如果我去掉“NOT”函数,那么我只正确地返回具有此a-->o关系的节点

我想我对NOT()的理解很弱

查询返回的正是您要求它返回的内容。在链接的示例中,有三个方面。前两个区域不包含任何对象,因此将返回所有三个节点。如果您将回路线更改为

RETURN a.area_number, o.id
你会看到这个

我不知道您更大的问题背景,但是如果您想知道不在任何区域中的对象,那么查询

MATCH (o:object)
WHERE NOT (o)<-[:CONTAINS]-()
RETURN o.id
匹配(o:对象)
如果不是(o)Trad

查询返回的正是您要求它返回的内容。在链接的示例中,有三个方面。前两个区域不包含任何对象,因此将返回所有三个节点。如果您将回路线更改为

RETURN a.area_number, o.id
你会看到这个

我不知道您更大的问题背景,但是如果您想知道不在任何区域中的对象,那么查询

MATCH (o:object)
WHERE NOT (o)<-[:CONTAINS]-()
RETURN o.id
匹配(o:对象)

在哪里不(o)它似乎在这里起作用:你能在那里重现问题并共享一个新的链接吗?对于这样一个断开连接的模式也要小心,你会得到在两个模式部分中单独匹配的任何东西的叉积。在一个小图上,这可能无关紧要,但在一个大图上,这将是昂贵的。我最好用匹配的
来打断查询(c:category…
而不是过滤返回到不同值的结果。查看此处是否存在重复出现的问题:上次查询不应返回对象3704。我尝试使用带有语法的。谢谢。我开始回答,但Jim抢先回答,这是一个很好的答案。仅返回不同的结果有时会隐藏路径组合的意外效果另外,在模式中声明关系类型和方向可能更好,您可以尝试在
WHERE
子句的路径谓词中使用更长的模式(使用match获得新结果,使用WHERE进行限制)。你可以用这样的方法进行实验:这里似乎是可行的:你能在那里重现问题并共享一个新的链接吗?对于这样一个断开连接的模式,你也要小心,你会得到在两个模式部分中单独匹配的任何东西的叉积。在一个小的图上,这可能无关紧要,但在一个大的图上,它会是be昂贵。我最好用匹配的
来打断查询(c:category…
而不是过滤返回到不同值的结果。查看此处是否存在重复出现的问题:上次查询不应返回对象3704。我尝试使用带有语法的。谢谢。我开始回答,但Jim抢先回答,这是一个很好的答案。仅返回不同的结果有时会隐藏路径组合的意外效果选项。此外,在模式中声明关系类型和方向可能更好,您可以尝试在
WHERE
子句中的路径谓词中使用更长的模式(使用match获得新结果,使用WHERE进行限制)。您可以尝试类似的方法: