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:“;不包含“;询问_Neo4j - Fatal编程技术网

Neo4j:“;不包含“;询问

Neo4j:“;不包含“;询问,neo4j,Neo4j,我正在尝试查找性别不包含字符串“male”的所有用户。我希望这个查询的结果是那些没有指定性别的用户 用户和性别是独立的节点,连接方式如下: (user node) - [:gender] -> (gender node) 对于某些用户,性别关系并不存在 我运行了以下查询: MATCH (g:genders) WHERE g.gender =~ ".*male.*" WITH g MATCH (u:users) WHERE NOT (u)-[:gender]->(g) RET

我正在尝试查找性别不包含字符串“male”的所有用户。我希望这个查询的结果是那些没有指定性别的用户

用户和性别是独立的节点,连接方式如下:

(user node) - [:gender] -> (gender node)
对于某些用户,性别关系并不存在

我运行了以下查询:

MATCH (g:genders) 
WHERE g.gender =~ ".*male.*" 
WITH g MATCH (u:users) 
WHERE NOT (u)-[:gender]->(g) 
RETURN COUNT(u);
这个查询的问题是它返回我数据库中的所有用户,因为WHERE NOT子句正在进行OR比较,而不是AND,即它正在查找性别不是男性或女性的所有用户,即我数据库中的所有用户


我怎样才能使它成为一个查询和查询?我想要一个解决方案,它不假设结束节点(在本例中是性别节点)总是只有两个可能的值。

此查询是否符合您的意愿

MATCH (u:user)
WITH COLLECT(u) AS cu
UNWIND cu AS u
MATCH (u)-[:gender]->(g:gender) WHERE g.gender =~ ".*male.*"
WITH cu, COLLECT(u) AS cv
RETURN REDUCE(s=[], x IN cu | CASE WHEN NOT x IN cv THEN s + x ELSE s END) AS result;

它将从用户总数中删除性别包含“男性”的用户。

我想找到匹配的用户节点,而不仅仅是计数。而且,这并不能解决我的问题,只是想告诉您,您可以将整个block:MATCH(u:user)替换为COLLECT(u)AS cu,cu,LENGTH(cu)AS total_u以u为单位展开cu,匹配(u:用户),计数(u)为total__,这是绝对正确的。但是请看我的新答案,它返回所需的用户节点——它实际上需要创建一个集合。