private static async Task Delete1(ICypherGraphClient client) { Console.WriteLine("Delete example"); var query = client.Cypher .Match("(x:Player)") .Where <Player>(x => x.Name == "Karol") .DetachDelete("x"); Console.WriteLine(query.Query.QueryText); await query.ExecuteWithoutResultsAsync(); }
private static async Task Set1(ICypherGraphClient client) { Console.WriteLine("Set example"); var query = client.Cypher .Match("(x:Player)") .Where <Player>(x => x.Name == "Jan") .Set("x.name = $name") .WithParam("name", "John"); Console.WriteLine(query.Query.QueryText); await query.ExecuteWithoutResultsAsync(); }
private static async Task Query1(ICypherGraphClient client) { Console.WriteLine("Simple node query"); var players = await client.Cypher .Match("(x:Player)") .Where <Player>(x => x.Name == "Adam" || x.Name == "Jola") .Return(x => x.As <Player>()) .ResultsAsync; foreach (var player in players) { Console.WriteLine(player); } }
public static Task CreateIndexFromProps <T>(this ICypherGraphClient graphClient, params string[] propList) { if (graphClient == null) { throw new ArgumentNullException(nameof(graphClient)); } if (propList == null) { throw new ArgumentNullException(nameof(propList)); } var text = "INDEX ON :" + typeof(T).Name + "(" + string.Join(",", propList) + ")"; return(graphClient.Cypher.Create(text).ExecuteWithoutResultsAsync()); }
private static async Task Create1(ICypherGraphClient client) { Console.WriteLine("Create example"); var query = client.Cypher .Match("(x:Player)") .Where <Player>(x => x.Name == "Jan") .Create("(x)<-[:PLAYED $relData]-(y:Player $playerData)") .WithParam("playerData", new { name = "Karol", score = 120 }) .WithParam("relData", new { won = true, date = DateTime.Now }); Console.WriteLine(query.Query.QueryText); await query.ExecuteWithoutResultsAsync(); }
private static void SetupTestData(ICypherGraphClient client) { /* // https://github.com/Readify/Neo4jClient/wiki/cypher-examples#create-a-user-only-if-they-dont-already-exist var newUser = new User {Id = 456, Name = "Jim"}; client.Cypher .Merge("(user:User { Id: {id} })") .OnCreate() .Set("user = {newUser}") .WithParams(new { id = newUser.Id, newUser }) .ExecuteWithoutResults(); */ // movie data base var queryText = File.ReadAllText("CreateMovieDb.cypher"); ExecuteCypher(client, queryText); }
private static async Task Query2(ICypherGraphClient client) { Console.WriteLine("Simple pattern query"); var query = client.Cypher .Match("(x:Player)-[y:PLAYED]->(z:Player)") .Where <Player, PlayedRelationship>((x, y) => x.Score > 90 && y.Won) .Return((x, z) => new { Winner = x.As <Player>(), Looser = z.As <Player>() }) .OrderByDescending("y.date"); Console.WriteLine(query.Query.QueryText); var results = await query.ResultsAsync; foreach (var item in results) { Console.WriteLine("{0} won with {1}", item.Winner.Name, item.Looser.Name); } }
private static void ExecuteCypher(ICypherGraphClient client, string queryText) { // https://github.com/Readify/Neo4jClient/wiki/cypher#manual-queries-highly-discouraged var query = new CypherQuery(queryText, new Dictionary<string, object>(), CypherResultMode.Projection); ((IRawGraphClient)client).ExecuteCypher(query); }