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)_Neo4j_Cypher - Fatal编程技术网

返回连接到所有(而不是任何)指定节点的内容(Cypher/Neo4j)

返回连接到所有(而不是任何)指定节点的内容(Cypher/Neo4j),neo4j,cypher,Neo4j,Cypher,我试图根据用户选择的术语返回内容节点。以下是我的密码查询: MATCH (content:content)-[:TAGGED_WITH]-(term:term) WHERE term.UUID IN {includedTerms} AND NOT term.UUID IN {excludedTerms} RETURN DISTINCT content.whatever 其中,{includedTerms}是要包括的术语的

我试图根据用户选择的术语返回内容节点。以下是我的密码查询:

    MATCH 
        (content:content)-[:TAGGED_WITH]-(term:term)
    WHERE
        term.UUID IN {includedTerms}
        AND NOT term.UUID IN {excludedTerms}
    RETURN DISTINCT content.whatever
其中,
{includedTerms}
是要包括的术语的UUID数组

问题在于,它返回的是连接到任何包含的术语节点的内容,而不是连接到每个包含的术语节点的内容

我意识到查询返回的正是我告诉它的内容。问题是如何指定内容必须使用用户选择的每个(而不是任何)术语节点进行标记


非常感谢-如果有任何需要的澄清,请告诉我。

我无法理解{excludedTerms}中
NOT term.UUID的用法,但您可以根据需要编辑以下查询

下面的查询将仅使用
术语
节点,这些节点将具有所需
includedTerms
集合中的
UUID
属性

MATCH (term:term) 
WHERE term.UUID IN [includedTerms] 
WITH collect(term) AS ms 
MATCH (content:content)-[r:TAGGED_WITH]->(x) 
WHERE x IN ms 
WITH content, count(r) AS rs,ms 
WITH collect(content) AS ns, collect(rs) AS rss, length(ms) AS mss 
RETURN [t IN range(0,length(ns)-1) 
  WHERE rss[t]=mss | ns[t]] AS result

使用WITH可能会有帮助:

MATCH 
    (content:content)-[:TAGGED_WITH]-(term:term)
WHERE
    term.UUID IN {includedTerms}
    AND NOT term.UUID IN {excludedTerms}
WITH content, count(*) as connectedTerms
WHERE connectedTerms = {_included_terms_size_}
RETURN DISTINCT content.whatever

感谢您的帮助,但是,经过测试,此解决方案似乎无法解决问题。通过此查询,我仍将获得连接到任何包含的术语而不是所有术语的内容,与以前一样。是否可以共享图形摘要或示例数据集?此外,查询的NOT部分的目的是指示不应返回连接到这些术语的内容。通过google drive访问示例数据集。我以前从来没有做过图表的要点,但我可以研究一下。这似乎有效,但我不明白为什么。count(*)和第二个WHERE子句在做什么?感谢您的帮助。count就像sql中的GroupBy:您将拥有内容,计数将是它所连接的术语数。第二个where子句只是检查连接项的数量是否符合预期