Neo4jClient:删除关系

时间:2012-10-09 21:25:32

标签: neo4j cypher neo4jclient

我有以下密码查询:

start n=node(0)
match (n)-[:USER_BELONGS_TO]-(x)-[r]->(y)
where (x.EmailAddress = 'someoneelse@something.net')
and (y.EmailAddress = 'someone@something.net')
and (type(r) = 'FOLLOWS')
delete r;

如何让Neo4jClient做同样的事情? (并告诉我查询成功或失败)

我在想这样的事情:

var results = new CypherFluentQuery(_dataOperations.GraphClient)
                  .Start("n", _dataOperations.GraphClient.RootNode)
                  .Match(string.Format("(n)-[:{0}]-(x)-[r]->(y)", UserBelongsTo.TypeKey))
                  .Where(string.Format("x.EmailAddress! ='{0}'", follower))
                  .And()
                  .Where(string.Format("y.EmailAddress! ='{0}'", leader))
                  .And()
                  .Where(string.Format("type(r) = '{0}'", Follows.TypeKey))
                  .Delete("r")
                  .Results;

然而,Delete()在该上下文中不起作用。

如果我可以获得RelationshipReference,那么我可以调用方法

void DeleteRelationship(RelationshipReference reference);

但我不知道你是否可以通过cypher获取RelationshipReference,当我尝试如下查询时。

 var results = new CypherFluentQuery(_dataOperations.GraphClient)
              .Start("n", _dataOperations.GraphClient.RootNode)
              .Match(string.Format("(n)-[:{0}]-(x)-[r]->(y)", UserBelongsTo.TypeKey))
              .Where(string.Format("x.EmailAddress! ='{0}'", follower))
              .And()
              .Where(string.Format("y.EmailAddress! ='{0}'", leader))
              .And()
              .Where(string.Format("type(r) = '{0}'", Follows.TypeKey))
              .Return<RelationshipReference<Follows>>("r")
              .Results
              .SingleOrDefault();

当在Neo4jClient内部进行反序列化时,我得到以下“为此对象定义的无参数构造函数”。无论如何,我想在一个查询中完成所有操作,而不是两个。

1 个答案:

答案 0 :(得分:2)

此问题现在已been fixed。您现在可以在Where。

之后添加Delete子句