我是新4J的新手。
// (Node2)
// / \
// Rel2 / \ Rel3
// / \
// (Node1) ------> (Node3)
// Rel1
//
// create nodes
CREATE
(n1:Node1{id:1,rights:["admin","user"]}),
(n2:Node2{id:2,rights:["admin","user"]}),
(n3:Node3{id:3,rights:["admin","user"]})
// create relationships
CREATE (n1)-[r1:Rel1{id:11,rights:["admin"]}]->(n3)
CREATE (n1)-[r2:Rel2{id:12,rights:["admin","user"]}]->(n2)
CREATE (n2)-[r3:Rel3{id:13,rights:["admin","user"]}]->(n3)
RETURN n1,n2,n3,r1,r2,r3
(Node1)-[Rel1]->(Node3)
(每个节点和发布在'Rights'属性中都有'admin'字符串。)
如果用户具有正确的'user',则路径应为:
(Node1)-[Rel2]-(Node2)-[Rel3]-(Node3)
(因为Rel1关系在“Rights”属性中没有“user”字符串。)
WITH ["admin","otherRight"] AS usersRights
MATCH path=allShortestPaths((n1:Node1{id:1})-[*..4]-(n2:Node3{id:3}))
WITH *, relationships(path) AS rels, nodes(path) as nodes
WHERE ANY (rel IN rels WHERE ANY(r IN rel.rights WHERE r IN usersRights))
AND ANY (node IN nodes WHERE ANY(r IN node.rights WHERE r IN usersRights))
RETURN path
WITH ["user","otherRight"] AS usersRights
MATCH ... // same as above
...
RETURN path
WITH ["user","otherRight"] AS usersRights
MATCH path=(n1:Node1{id:1})-[r1]-(n2)-[r2]-(n3:Node3{id:3})
WHERE ANY(r IN n1.rights WHERE r IN usersRights)
AND ANY(r IN r1.rights WHERE r IN usersRights)
AND ANY(r IN n2.rights WHERE r IN usersRights)
AND ANY(r IN r2.rights WHERE r IN usersRights)
AND ANY(r IN n3.rights WHERE r IN usersRights)
RETURN path
谢了。
第一个查询有一个WITH
子句分隔match
和WHERE
子句,这可以防止WHERE
子句影响AllShortestPath()
函数的行为。因此,该函数只是返回最短路径,而不测试节点和关系。
请尝试以下方法:
WITH ["admin","otherRight"] AS usersRights
MATCH path=allShortestPaths((n1:Node1{id:1})-[*..4]-(n2:Node3{id:3}))
WHERE
ANY (rel IN relationships(path) WHERE ANY(r IN rel.rights WHERE r IN usersRights)) AND
ANY (node IN nodes(path) WHERE ANY(r IN node.rights WHERE r IN usersRights))
RETURN path;
我有一个neo4j数据库,里面有一些数据。大多数节点都有一个属性,但不是所有节点都有;我想构造一个Cypher查询来匹配并返回所有不匹配的查询。 我已经尝试了以下所有方法,但它们都给出了0个结果: 但是,我至少有一个节点没有指定属性,我可以通过 检查结果视图中的节点,或者注意到 返回。 如何匹配没有属性的所有节点?
我有一个域类,它具有名称为“alias”的属性,它是一个字符串的arraylist,如下所示: alias包含以下值:{“John Doe”、“Alex Smith”、“Greg Walsh”} 我希望能够使用如下所示的存储库查询进行类似“I saw Smith Today”的查询,并获得数组值输出“Alex Smith”: 我想做一个输入查询子字符串匹配的数组值。 例如:输入查询:“我今天看到史
我使用Neo4j(版本3.4.1)和Spring-data-neo4j(5.0.10)。RELEASE)在我的应用程序中。我也在使用OGM。 我的节点之间有以下关系: 车辆(V)具有部件(P1和P2)。零件可从经销商处购买(D1、D2和D3)。零件本身可以相互链接(例如P2与P1链接) 我正在尝试编写一个密码查询,以获取与id匹配的零件节点。我希望获取该节点及其相关节点和关系。 下面是我的查询:
从Neo4j 1.9开始。2,并使用Cypher查询语言,我希望在具有特定公共属性值的节点之间创建关系。我有一组具有属性H的节点G,在G节点之间当前不存在任何关系。 在Cypher语句中,是否可以按H属性值对G节点进行分组,并在成为同一组的每个节点之间创建关系HR?知道每个小组的人数在2人之间 我一直在努力管理这样的查询,但没有找到正确的语法。下面是一个小样本数据集: 最后,我希望有这样的关系:
我有一个Neo4j图(版本2.2.2),其中包含大量关系。对于examaple:1个节点“组”,300000个节点“数据”,300000个从“组”到所有现有节点“数据”的关系。我需要检查数据节点集和特定组节点之间是否存在关系(例如,200个节点)。但我使用的密码查询非常慢。我尝试了许多修改这个密码,但没有结果。 创建图表的密码: 查询1:成本。600003在730毫秒内的总db命中。可以接受,但我
例如,我有以下价格的产品: 产品之间没有相互连接的关系。 我需要根据初始价格值(密码查询参数),找到一组(路径)的产品,通过最大价格增量(密码查询参数)彼此区分。