neo4j в Golang

Children:: Инструментирование OTEL neo4j

Запись данных

	// Создаем сессию
	session := driver.NewSession(ctx, neo4j.SessionConfig{AccessMode: neo4j.AccessModeWrite})
	defer func() {
		_ = session.Close(ctx)
	}()
 
	// Запись данных
	_, err = session.ExecuteWrite(ctx, func(tx neo4j.ManagedTransaction) (any, error) {
		// Создание пользователей
		queries := []struct {
			query  string
			params map[string]interface{}
		}{
			{query: "MERGE (a:Person {name: $name, age: $age})", params: map[string]interface{}{"name": "Alice", "age": 30}},
			{query: "MERGE (b:Person {name: $name, age: $age})", params: map[string]interface{}{"name": "Bob", "age": 25}},
			{query: "MERGE (c:Person {name: $name, age: $age})", params: map[string]interface{}{"name": "Charlie", "age": 35}},
		}
		for _, q := range queries {
			_, err := tx.Run(ctx, q.query, q.params)
			if err != nil {
				return nil, err
			}
		}

Чтение данных

	// Чтение данных: находим друзей для Alice
	_, err = session.ExecuteRead(ctx, func(tx neo4j.ManagedTransaction) (any, error) {
		result, err := tx.Run(ctx,
			"MATCH (a:Person {name: $name})-[:FRIENDS]->(friend) "+
				"RETURN friend.name AS name, friend.age AS age",
			map[string]interface{}{"name": "Alice"})
		if err != nil {
			return nil, err
		}
 
		// Обработка результата
		fmt.Println("Друзья Alice:")
		for result.Next(ctx) {
			record := result.Record()
			name, _ := record.Get("name")
			age, _ := record.Get("age")
			fmt.Printf("- %s (Возраст: %d)\n", name, age)
		}
 
		return nil, result.Err()
	})
	if err != nil {
		log.Fatalf("Ошибка выполнения чтения: %v", err)
	}