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

Neo4j 基于关系属性的过滤

Neo4j 基于关系属性的过滤,neo4j,cypher,Neo4j,Cypher,如下图所示: 我想设计一个密码查询,它将为“第一个用户”返回以下节点: 节点7(“dep 2”) 条件是,为了返回节点,用户必须拥有它的所有依赖项。当用户和节点之间存在HAS关系时,用户拥有节点。 这很简单。下面的查询应该可以做到这一点: MATCH (a:Dep)-[:REQUIRES]->(req:Dep) WITH collect(req) AS requirements, a MATCH (ub:Dep)<-[:HAS]-(:User) WITH collect(ub)

如下图所示:

我想设计一个密码查询,它将为“第一个用户”返回以下节点:

  • 节点7(“dep 2”)
条件是,为了返回节点,用户必须拥有它的所有依赖项。当用户和节点之间存在HAS关系时,用户拥有节点。 这很简单。下面的查询应该可以做到这一点:

MATCH (a:Dep)-[:REQUIRES]->(req:Dep)
WITH collect(req) AS requirements, a

MATCH (ub:Dep)<-[:HAS]-(:User)
WITH collect(ub) AS userDeps, requirements, a

WHERE ALL (req IN requirements WHERE req IN userDeps)
RETURN a
MATCH(a:Dep)-[:REQUIRES]->(req:Dep)
以collect(req)作为要求
匹配(ub:Dep)仅供将来参考。
如果您有一个任务似乎太复杂,无法通过一个(或实际上是组合的)密码查询来处理,那么您可以扩展Neo4J功能

您可以编写自己的模块并使用Neo4J进行部署。其中一种方法是使用GraphAware运行时。

依赖项是否级联到多个级别?是否在所有关系上都有
数据
属性?是否
有.data
必须
=
单个
需要。data
还是必须
=
所有相关
需要的总和。data
?@FrobberOfBits不,它们不会级联到多个级别。所有关系都有一个数据项目。也不它必须>=符合所有相应的要求。如:dep1->requires(数据:5)dep2 dep1->required(数据:6)dep3中所示,要匹配用户,必须使dep2至少具有数据5,而dep3至少具有数据6@FrobberOfBits实际上是的,它们可以级联到多个级别。但在这个用例中,这并不重要。