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个条件的AND子句_Neo4j - Fatal编程技术网

NEO4j中匹配3个条件的AND子句

NEO4j中匹配3个条件的AND子句,neo4j,Neo4j,我的问题是: MATCH (n:TemplateForm)-[r:DEFINED_BY]-(m:ProjectForm)-[s:CONNECTED]-(b:ProjectPage)-[p:CONNECTED]-(d:ProjectField) WHERE Id(n) = 907318 AND b.name = "REPORT PHOTOS - COVER AND APPENDICES" AND NOT (d.type IN (['imageArray','ima

我的问题是:

MATCH (n:TemplateForm)-[r:DEFINED_BY]-(m:ProjectForm)-[s:CONNECTED]-(b:ProjectPage)-[p:CONNECTED]-(d:ProjectField) 
WHERE Id(n) = 907318 
  AND b.name = "REPORT PHOTOS - COVER AND APPENDICES" 
  AND NOT (d.type IN (['imageArray','image','barSeparator','map'])) 
  AND (d.name) IN(["Photo 5 Description:"]) 
  AND (d.value) IN (["penthouse roof"]) 
RETURN d

我有3个字段-照片6描述:“,”照片7描述:“,”照片5描述:在d.name中 我在d值中给他们3个值-顶层屋顶、房子、农舍
现在我得到的结果是——无论值匹配到哪里,我都会得到所有的行。如果在照片7的描述中,我仍然有阁楼,我会得到它作为结果,我想要的是,如果只有在照片6的描述中,我有阁楼,在照片7的描述中,我有房子,在照片5的描述中,我有农舍,那么如果我理解正确,只有这一行应该得到满足您需要具有以下条件的所有
:projectFields
节点:

  • name=“照片5说明:”和value=“农舍”
  • name=“照片6说明:”和value=“阁楼屋顶”
  • name=“照片7描述:”和value=“房子”
或者类似的,所有其他的条件似乎都在起作用

我关心的是你的领域的建模,但因为这不是你的问题,我将把我的考虑留给我

我想试试这样的东西:

MATCH (n:TemplateForm)-[r:DEFINED_BY]-(m:ProjectForm)-[s:CONNECTED]-(b:ProjectPage)-[p:CONNECTED]-(d:ProjectField) 
WHERE Id(n) = 907318 
    AND b.name = "REPORT PHOTOS - COVER AND APPENDICES" 
    AND NOT (d.type IN ['imageArray','image','barSeparator','map']) 
    AND (
        (d.name = "Photo 6 Description:" AND d.value = "penthouse roof") 
        OR (d.name = "Photo 7 Description:" AND d.value = "house")
        OR (d.name = "Photo 5 Description:" AND d.value = "farmhouse")
    )
RETURN d
通过这种方式,它应该返回所有符合其中一个条件的
:projectFields
,其他组合将被排除

我可能理解错了,如果是的话,我很抱歉


我需要建议的一件事是至少添加关系方向以提高性能。

Hi!这里有什么问题?您的预期结果与实际结果是什么?匹配(n:TemplateForm)-(r:DEFINED_BY]-(m:ProjectForm)-(s:CONNECTED]-(b:ProjectPage)-(p:CONNECTED]-(d:ProjectField)其中Id(n)=907318和b.name=”在([“照片6说明:”、“照片7说明:”、“照片5说明:”)和([“阁楼屋顶”、“房子”、“农舍”])中报告照片-封面和附录,而不是(d.键入([“图像阵列”、“图像”、“条形分隔符”、“地图”))和(d.名称)return d->如何编写此条件问题是:如果我执行此查询,它将进入或条件:我发现很难相信这是诚实的。查询清楚地说明了“和”条件。你能用你得到的结果集的示例扩展你的问题,并告诉我们你“不想要”的记录吗?我有3个字段-照片6描述:“,”照片7描述:“,”照片5描述:好吗?不,我给了他们三个价值观——顶层屋顶、房子、农舍”“是吗?现在我得到的结果是——只要值匹配,我就得到所有行。如果在照片7的描述中,我还有阁楼,我得到了它,因此我想要的是,如果只有在照片6的描述中,我有阁楼,在照片7的描述中,我有房子,在照片5的描述中,我有农舍,那么只有这个应该得到满足,只有一件事((d.name=“Photo 6 Description:”和d.value=“阁楼屋顶”)或(d.name=“照片7描述:”和d.value=“房子”)或(d.name=“照片5描述:”和d.value=“农舍”)——我需要,尽管有或——如果您使用,这可以做到吗“它将在同一节点上搜索所有3个条件,这基本上是不可能的。试着运行那个,让我知道。如果使用我提供的内容,它将搜索所有类型为:projectFields的节点,并找到与这3个节点之一匹配的节点。一个节点不可能有3个不同的名称或3个不同的值。您要搜索的是3个不同的节点,每个节点都有这3个名称-值组合中的一个。谢谢@utnaf如果它工作正常,请确认答案是否符合您的需要。祝你周末愉快