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
Database 从图中排除节点的问题 组织_Database_Neo4j_Cypher_Graph Databases - Fatal编程技术网

Database 从图中排除节点的问题 组织

Database 从图中排除节点的问题 组织,database,neo4j,cypher,graph-databases,Database,Neo4j,Cypher,Graph Databases,我对图形数据库和neo4j/cypher非常陌生,我很难理解如何从结果中排除各种片段。下面是我的图表。每个节点和每个关系都有一个activeFrom和activeTo属性,允许我查看历史上任何给定点的图形 MATCH (:Collective:Company)<-[tree *0..4]-(downline:Collective) RETURN downline 奖金 我已经用这些数据建立了一个neo4j沙箱,如果需要的话,你们可以使用请对此保持成熟,因为我不知道如何使其成为只读。请不

我对图形数据库和neo4j/cypher非常陌生,我很难理解如何从结果中排除各种片段。下面是我的图表。每个节点和每个关系都有一个
activeFrom
activeTo
属性,允许我查看历史上任何给定点的图形

MATCH (:Collective:Company)<-[tree *0..4]-(downline:Collective) RETURN downline

奖金 我已经用这些数据建立了一个neo4j沙箱,如果需要的话,你们可以使用请对此保持成熟,因为我不知道如何使其成为只读。请不要去删除数据和混乱的事情为其他人。我还亲自为这个云实例付费,所以请不要滥用VM/资源:)


您可以在此处访问它:(抱歉,出于安全目的,该问题已被删除)。

基于您的问题,我正在尝试拼凑您需要的内容,我知道您希望返回包含所有活动节点和关系的路径。这是因为您询问了Office 27和Office 5,它们都是活动节点,但它们与区域5的单一关系处于非活动状态,因此您不需要Office 27->region 5和Office 5->region 5之间的路径

但是,办公室2处于活动状态,并且它与区域4(也处于活动状态)具有活动关系。区域4与公司1的关系不活跃,因此,由于您不希望结果中出现Office 2,我假设这是因为它在整个路径中都存在不活跃的关系

如果是这种情况,这里有一个查询,希望它能满足您的需求-

MATCH p=(:Collective:Company)<-[tree*0..4]-(downline:Collective)
WHERE
  ALL(x in relationships(p) WHERE x.activeFrom <= '2015-08-31 23:59:59'
  AND (x.activeTo IS NULL OR x.activeTo > '2015-08-31 23:59:59'))
  AND ALL(x in nodes(p) WHERE x.activeFrom <= '2015-08-31 23:59:59'
  AND (x.activeTo IS NULL OR x.activeTo > '2015-08-31 23:59:59'))
RETURN p

MATCH p=(:Collective:Company)噢,这看起来是一个很好的答案:)谢谢关于neo控制台的提示:)你能帮我理解为什么我写的查询没有达到我预期的效果吗?这有点奇怪,因为你想根据路径进行过滤,但是你已经把它分成了几个节点,然后只有关系——如果你匹配的话(:Collective:Company)
MATCH p=(:Collective:Company)<-[tree*0..4]-(downline:Collective)
WHERE
  ALL(x in relationships(p) WHERE x.activeFrom <= '2015-08-31 23:59:59'
  AND (x.activeTo IS NULL OR x.activeTo > '2015-08-31 23:59:59'))
  AND ALL(x in nodes(p) WHERE x.activeFrom <= '2015-08-31 23:59:59'
  AND (x.activeTo IS NULL OR x.activeTo > '2015-08-31 23:59:59'))
RETURN p