1

我有以下密码查询:

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 中进行反序列化时,我得到以下“没有为此对象定义的无参数构造函数”。无论如何,我想在一个查询中完成这一切,而不是两个。

4

1 回答 1

2

此问题现已修复。您现在可以在 Where 之后添加 Delete 子句。

于 2012-10-10T03:42:13.767 回答