在密码neo4j查询中没有()

tra*_*rad 0 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
Run Code Online (Sandbox Code Playgroud)

"WHERE NOT .."被忽略了,我从区域节点返回带有传入的节点:CONTAINS关系.如果我取出"NOT"函数,那么我正确地只返回具有这种 - > o关系的节点.

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

Jim*_*ard 6

岛,

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

RETURN a.area_number, o.id
Run Code Online (Sandbox Code Playgroud)

你会看到这个.

我不知道你的大问题上下文,但如果你想知道不在任何区域的对象,那么查询

MATCH (o:object)
WHERE NOT (o)<-[:CONTAINS]-()
RETURN o.id
Run Code Online (Sandbox Code Playgroud)

将完成任务.

恩典与和平,

吉姆