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能否在合并语句后添加WHERE子句?_Neo4j_Cypher - Fatal编程技术网

Neo4j能否在合并语句后添加WHERE子句?

Neo4j能否在合并语句后添加WHERE子句?,neo4j,cypher,Neo4j,Cypher,下面我有一个功能性的CQL查询,它返回3种节点类型和2种关系 LOAD CSV WITH HEADERS FROM ("file:///sessions/parsed_message_amp_v2.csv") AS row MERGE (a:Sender { name: row.From}) MERGE (b:Url_Sub_Fld { name: row.Url_Sub_Fld}) MERGE (c:Recipient { name: row.To}) WITH a,b,c,row CALL

下面我有一个功能性的CQL查询,它返回3种节点类型和2种关系

LOAD CSV WITH HEADERS FROM ("file:///sessions/parsed_message_amp_v2.csv") AS row
MERGE (a:Sender { name: row.From}) 
MERGE (b:Url_Sub_Fld { name: row.Url_Sub_Fld})
MERGE (c:Recipient { name: row.To})
WITH a,b,c,row
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, b) YIELD rel as rel1 
CALL apoc.merge.relationship(b, row.Outcome2, {}, {}, c) YIELD rel as rel2
RETURN a,b,c
我想添加一个where子句,该子句只对b.Url\u Sub\u Fld是字符串
false
的节点进行图形化。当然,下面的例子失败了。你怎么做这样的事

LOAD CSV WITH HEADERS FROM ("file:///sessions/parsed_message_amp_v2.csv") AS row
MERGE (a:Sender { name: row.From}) 
MERGE (b:Url_Sub_Fld { name: row.Url_Sub_Fld})
MERGE (c:Recipient { name: row.To})
WHERE b.Url_Sub_Fld = "false" 
WITH a,b,c,row
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, b) YIELD rel as rel1 
CALL apoc.merge.relationship(b, row.Outcome2, {}, {}, c) YIELD rel as rel2
RETURN a,b,c

如果您希望在此时筛选结果,请使用WITH,后跟WHERE。听起来您只想过滤返回的内容,所以在通话之后和返回之前应用:

LOAD CSV WITH HEADERS FROM ("file:///sessions/parsed_message_amp_v2.csv") AS row
MERGE (a:Sender { name: row.From}) 
MERGE (b:Url_Sub_Fld { name: row.Url_Sub_Fld})
MERGE (c:Recipient { name: row.To})
WITH a,b,c,row
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, b) YIELD rel as rel1 
CALL apoc.merge.relationship(b, row.Outcome2, {}, {}, c) YIELD rel as rel2
WITH a,b,c,row
WHERE b.Url_Sub_Fld = "false" 
RETURN a,b,c

这种
WHERE
子句的语义应该是什么<代码>合并通常的工作方式是,如果它不能匹配您定义的内容,它将创建新节点-这就是您想要的吗?如果是这样,您可以将其添加到MERGE子句:
MERGE(b:Url\u Sub\u Fld{name:row.Url\u Sub\u Fld,另一个属性:“false”})
,这是有意义的。如果我想获取不包含“false”的其他数据,我可以在MERGE语句中定义它吗?使用一个常规的MATCH子句。对其应用的位置做了一个小更改,因为我刚刚意识到您似乎只想筛选返回的结果,但仍然应用所有操作(您的合并关系调用)为了所有的结果。再次感谢你,有很多东西要学。。。当使用MERGE@InverseFalcon时,在