neo4jphp:Cypher和Resultset不同

neo4jphp:Cypher和Resultset不同,neo4j,neo4jphp,Neo4j,Neo4jphp,看来我太累了,找不到解决办法,也许有人给了我一个提示 我用Neo4J构建了一个图形,通过neo4jphp(everyman)连接。使用java浏览器,图形看起来正常,每个用户都存在一次,并且可能有多个他所属的组 在创建用户时,我使用MERGE,以避免它们重复出现 MERGE (user:PERSON { firstname: "Max", name: "Muster", password:"e52ddddddd9afb7b373f9da437", title:"something", logi

看来我太累了,找不到解决办法,也许有人给了我一个提示

我用Neo4J构建了一个图形,通过neo4jphp(everyman)连接。使用java浏览器,图形看起来正常,每个用户都存在一次,并且可能有多个他所属的组

在创建用户时,我使用MERGE,以避免它们重复出现

MERGE (user:PERSON {
firstname: "Max",
name: "Muster", 
password:"e52ddddddd9afb7b373f9da437",
title:"something",
login:"Nick",   
status:"active"   
}) 
ON CREATE SET user.uuid = "'.uniqid().'" // PHP function for a UUID
return user;
即使在我重新发送查询或重新加载页面时,我也能看到正确的用户数,这一点非常有效

用户通过这样的查询连接到组

MATCH (user:PERSON), (team:GROUP)      
WHERE user.name= "Muster" AND user.firstname="Max" AND team.name="LOCAL_USER"
CREATE (user)-[:IS_MEMBER_OF {role:"user", status:"active"}]->(team);
MATCH (user:PERSON {status: "active"})-[relation:IS_MEMBER_OF{status:"active"}]->(team:GROUP {name:"LOCAL_USER"} )
RETURN user
ORDER BY user.name;
在Neo4J的GUI中检查这一点可以显示正确的图形(至少从我所看到的情况来看)。我拥有适当数量的用户及其关系

当我在浏览器GUI中直接通过Cypher查询图形时,如下所示

MATCH (user:PERSON), (team:GROUP)      
WHERE user.name= "Muster" AND user.firstname="Max" AND team.name="LOCAL_USER"
CREATE (user)-[:IS_MEMBER_OF {role:"user", status:"active"}]->(team);
MATCH (user:PERSON {status: "active"})-[relation:IS_MEMBER_OF{status:"active"}]->(team:GROUP {name:"LOCAL_USER"} )
RETURN user
ORDER BY user.name;
我得到了正确的用户数量

当我使用neo4jphp库(everyman)时,我收到一些双重用户-结果集有多个元素与同一用户。我不明白他们为什么会有不同的行为,但我想我可能把关系搞砸了。但我仍然想知道,当您通过GUI或everyman lib发送相同的cypher查询时,为什么会返回不同数量的记录,我需要提示如何更改查询,以确保每个用户只获得一条记录,因为每个用户仅一次连接到本地用户组


谢谢你把我推到正确的方向。

我想你会得到双倍奖励,因为你有多条路径(例如多个团队)供用户使用, 使用
返回不同的用户

对于您的导入声明,您使用了错误的方法,而不是您的方法

按唯一id合并(例如在您的情况下登录),并在创建集上使用
设置其他属性…

另外在查询字符串中使用参数而不是文字值

MERGE (user:PERSON {login:{login}})
ON CREATE SET
  user.firstname = {firstname}, user.name= {name}, user.password = {password},
  user.title={title}, user.status = {status}, user.uuid = {uuid}
RETURN user;

谢谢,那是丢失的链接!还感谢您向我指出参数的用法和MERGE语句的修改,并对其进行了测试,结果很好!非常感谢-非常快:)+1