首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >neo4jphp:赛弗和结果集不同

neo4jphp:赛弗和结果集不同
EN

Stack Overflow用户
提问于 2014-11-09 19:27:14
回答 1查看 111关注 0票数 2

似乎我太累了,找不到解决的办法,也许有人给了我一个提示。

我在Neo4J中构建了一个图形,我通过neo4jphp (普通人)连接它。使用java浏览器,图形看起来不错,每个用户都存在一次,并且可能有几个属于他的组。

在创建用户时,我使用了MERGE,以避免它们加倍。

代码语言:javascript
复制
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;

即使在重新发送查询或重新加载页面时,这也能很好地工作,因为我看到了正确的用户数。

用户与对这样的组的查询相连接

代码语言:javascript
复制
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);

在Neo4J的GUI中检查这一点会显示一个正确的图形(至少从我所看到的情况来看)。我有正确的数量的用户和他们的关系。

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

代码语言:javascript
复制
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发送相同的密码查询时,为什么返回不同数量的记录?我需要一个提示,如何更改可能的查询,以确保每个用户只获得一条记录,因为每个用户只有一次连接到LOCAL_USER组。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-09 19:44:12

我认为您获得了双倍,因为您有多个路径(例如,多个团队)供用户使用,请使用RETURN distinct user

对于import语句,使用错误的方法,而不是使用方法。

按唯一id合并(例如,在您的情况下登录),并使用ON CREATE SET ...设置其他属性

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

代码语言:javascript
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26832312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档