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