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);

しかし、サイファーを介して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内で逆シリアル化が行われていると、次の「このオブジェクトにパラメーターなしのコンストラクターが定義されていません」というメッセージが表示されます。とにかく、これを2つではなく、1つのクエリで実行したいと思います。

4

1 に答える 1

2

この問題は修正されました。Whereの後にDelete句を追加できるようになりました。

于 2012-10-10T03:42:13.767 に答える