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,Cypher:匹配;“集团”;包括特定的;“用户”;只有_Neo4j_Cypher - Fatal编程技术网

Neo4j,Cypher:匹配;“集团”;包括特定的;“用户”;只有

Neo4j,Cypher:匹配;“集团”;包括特定的;“用户”;只有,neo4j,cypher,Neo4j,Cypher,我有(:User)节点,它们被分组为[:IN](:Group)节点 CREATE (u1:User {name: 'u1'}), (u2:User {name: 'u2'}), (u3:User {name: 'u3'}) CREATE (g1:Group {name: 'g1'}), (g2:Group {name: 'g2'}) CREATE u1-[:IN]->g1, u2-[:IN]->g1, u3-[:IN]->g1 CREATE u1-[:IN]->g2, u

我有
(:User)
节点,它们被分组为
[:IN]
(:Group)
节点

CREATE (u1:User {name: 'u1'}), (u2:User {name: 'u2'}), (u3:User {name: 'u3'})
CREATE (g1:Group {name: 'g1'}), (g2:Group {name: 'g2'})
CREATE u1-[:IN]->g1, u2-[:IN]->g1, u3-[:IN]->g1
CREATE u1-[:IN]->g2, u2-[:IN]->g2
RETURN *
给定“u1”和“u2”,我想找出它们单独属于哪个
(:组)
,即“g2”。我的第一次尝试是不正确的

MATCH (u:User)
WHERE u.name IN ['u1', 'u2']
WITH u
MATCH (u)-[:IN]->(g:Group)
RETURN g, collect(u)
它返回这些用户所属的两个
(:Group)
,这是可以理解的


如何确定“u1”和“u2”单独属于“g2?”

您可以尝试这样的标准:“u1”和“u2”都是组的成员,并且组中只有两个成员”。在cypher中有一种说法

MATCH (:User { name:'u1' })-[:IN]->(g)<-[:IN]-({ name:'u2' })
MATCH g<-[:IN]-(m)
WITH g, collect(m) AS members
WHERE length(members)= 2
RETURN *

MATCH(:User{name:'u1})-[:IN]>(g)您可以尝试类似“u1和u2都是组的成员,并且组中只有两个成员”这样的标准。在cypher中有一种说法

MATCH (:User { name:'u1' })-[:IN]->(g)<-[:IN]-({ name:'u2' })
MATCH g<-[:IN]-(m)
WITH g, collect(m) AS members
WHERE length(members)= 2
RETURN *

MATCH(:User{name:'u1})-[:IN]>(g)您可以尝试类似“u1和u2都是组的成员,并且组中只有两个成员”这样的标准。在cypher中有一种说法

MATCH (:User { name:'u1' })-[:IN]->(g)<-[:IN]-({ name:'u2' })
MATCH g<-[:IN]-(m)
WITH g, collect(m) AS members
WHERE length(members)= 2
RETURN *

MATCH(:User{name:'u1})-[:IN]>(g)您可以尝试类似“u1和u2都是组的成员,并且组中只有两个成员”这样的标准。在cypher中有一种说法

MATCH (:User { name:'u1' })-[:IN]->(g)<-[:IN]-({ name:'u2' })
MATCH g<-[:IN]-(m)
WITH g, collect(m) AS members
WHERE length(members)= 2
RETURN *



MATCH(:User{name:'u1})-[:IN]->(g)
MATCH(g:Group)
MATCH(g:Group)
MATCH(g:Group)
MATCH(g:Group)
MATCH(g:Group)非常好,谢谢@luane!您认为它有效吗?该查询没有测试组中是否有两个用户。如果
u1
也属于(并且单独在)一个组
g3
,会发生什么情况?@GrantShield您可以在自己的
neo4j sh
中分析查询以查看它们的效率,或者在运行查询,然后单击
结果详细信息
。如果您有一个像
:User(name)
这样的索引,那么将用户名包含在
匹配项中会更有效,这是绝对正确的。它不考虑你提到的情况。我会将我的查询更改为匹配(u:User)-[:IN]->(g)和collect(u)作为groupUsers,g和groupUsers,g,length(groupUsers)作为groupCount,其中ALL(x在groupUsers中,x.name在['u1','u2']中)和groupCount=2返回g,但现在您的返回更多sense@jjaderberg,我可以为3个或更多用户使用Luane's。我不知道如何处理你的。太好了,谢谢@luane!您认为它有效吗?该查询没有测试组中是否有两个用户。如果
u1
也属于(并且单独在)一个组
g3
,会发生什么情况?@GrantShield您可以在自己的
neo4j sh
中分析查询以查看它们的效率,或者在运行查询,然后单击
结果详细信息
。如果您有一个像
:User(name)
这样的索引,那么将用户名包含在
匹配项中会更有效,这是绝对正确的。它不考虑你提到的情况。我会将我的查询更改为匹配(u:User)-[:IN]->(g)和collect(u)作为groupUsers,g和groupUsers,g,length(groupUsers)作为groupCount,其中ALL(x在groupUsers中,x.name在['u1','u2']中)和groupCount=2返回g,但现在您的返回更多sense@jjaderberg,我可以为3个或更多用户使用Luane's。我不知道如何处理你的。太好了,谢谢@luane!您认为它有效吗?该查询没有测试组中是否有两个用户。如果
u1
也属于(并且单独在)一个组
g3
,会发生什么情况?@GrantShield您可以在自己的
neo4j sh
中分析查询以查看它们的效率,或者在运行查询,然后单击
结果详细信息
。如果您有一个像
:User(name)
这样的索引,那么将用户名包含在
匹配项中会更有效,这是绝对正确的。它不考虑你提到的情况。我会将我的查询更改为匹配(u:User)-[:IN]->(g)和collect(u)作为groupUsers,g和groupUsers,g,length(groupUsers)作为groupCount,其中ALL(x在groupUsers中,x.name在['u1','u2']中)和groupCount=2返回g,但现在您的返回更多sense@jjaderberg,我可以为3个或更多用户使用Luane's。我不知道如何处理你的。太好了,谢谢@luane!您认为它有效吗?该查询没有测试组中是否有两个用户。如果
u1
也属于(并且单独在)一个组
g3
,会发生什么情况?@GrantShield您可以在自己的
neo4j sh
中分析查询以查看它们的效率,或者在运行查询,然后单击
结果详细信息
。如果您有一个像
:User(name)
这样的索引,那么将用户名包含在
匹配项中会更有效,这是绝对正确的。它不考虑你提到的情况。我会将我的查询更改为匹配(u:User)-[:IN]->(g)和collect(u)作为groupUsers,g和groupUsers,g,length(groupUsers)作为groupCount,其中ALL(x在groupUsers中,x.name在['u1','u2']中)和groupCount=2返回g,但现在您的返回更多sense@jjaderberg,我可以为3个或更多用户使用Luane's。我不知道如何处理你的。谢谢@jjaderberg,但不幸的是,它没有返回任何结果。@GrantShield My bad,不知道为什么我认为这会起作用。我已经更改了查询,现在它应该执行我的预期。@GrantShield您应该选择此答案,抱歉。我的很明显错过了一个案子。太棒了,谢谢你@jjaderberg!我还将查看查询分析器。我不确定如何查询3个或更多用户。我将尝试解决它,但现在选择另一个答案…谢谢@jjaderberg,但不幸的是,它没有返回任何结果。@GrantShield My bad,不知道为什么我认为这会奏效。我已经更改了查询,现在它应该执行我的预期。@GrantShield您应该选择此答案,抱歉。我的很明显错过了一个案子。太棒了,谢谢你@jjaderberg!我也会查看查询分析器。