Cette section présente les méthodes Uql()
et UqlStream()
sur un objet Connection
pour interroger la base de données en utilisant UQL.
Chaque exemple se concentre uniquement sur l'utilisation de la méthode. Pour un exemple de code complet, veuillez vous référer à l'exemple complet.
UQL (Ultipa Query Language) est le langage conçu pour interagir pleinement avec les bases de données de graph d'Ultipa. Pour des détails sur UQL, consultez la documentation.
Uql()
Exécute une requête UQL sur le graphset ou la base de données actuel et retourne le résultat.
Paramètres :
string
: La requête UQL à exécuter.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Response
: Résultat de la requête.
// Récupère 5 noeuds @movie dans le graphset 'miniCircle' et imprime leur nom
RequestConfig requestConfig = new RequestConfig() { Graph = "miniCircle", UseMaster = true };
var res = await ultipa.Uql("find().nodes({@movie}) as n return n{*} limit 5", requestConfig);
var nodeList = res?.Alias("n")?.AsNodes();
foreach (var node in nodeList)
{
Console.WriteLine(node.Values.GetValueOrDefault("name"));
}
The Shawshank Redemption
Farewell My Concubine
Léon: The Professional
Titanic
Life is Beautiful
Pour plus d'exemples, veuillez vous référer à Mapping des Types entre Ultipa et C#.
UqlStream()
Exécute une requête UQL sur le graphset ou la base de données actuel et retourne le résultat de manière incrémentielle, permettant de gérer de grands ensembles de données sans tout charger en mémoire d'un coup.
Paramètres :
string
: La requête UQL à exécuter.UqlResponseStream
: Écouteur pour le processus de streaming.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
void
// Récupère tous les chemins en 1 étape dans le graphset 'miniCircle'
RequestConfig requestConfig = new RequestConfig() { Graph = "miniCircle", UseMaster = true };
var count = 0;
await ultipa.UqlStream(
"n().e().n() as paths return paths{*}",
new UqlResponseStream()
{
OnStart = () => Console.WriteLine("Start"),
OnData = (
resp =>
{
if (resp.Status.ErrorCode != ErrorCode.Success)
{
Console.WriteLine(resp.Status.Msg);
}
var paths = resp.Get(0).AsPaths();
count += paths.Count();
Console.WriteLine($"Count ={count}");
return true;
}
),
OnEnd = () => Console.WriteLine("End"),
},
requestConfig
);
Start
Count = 1390
End
Exemple Complet
using System.Security.Cryptography.X509Certificates;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using UltipaService;
using UltipaSharp;
using UltipaSharp.api;
using UltipaSharp.configuration;
using UltipaSharp.connection;
using UltipaSharp.exceptions;
using UltipaSharp.structs;
using UltipaSharp.utils;
using Logger = UltipaSharp.utils.Logger;
using Property = UltipaSharp.structs.Property;
using Schema = UltipaSharp.structs.Schema;
class Program
{
static async Task Main(string[] args)
{
// Configurations de connexion
// Exemple d'URI : Hosts=new[]{"mqj4zouys.us-east-1.cloud.ultipa.com:60010"}
var myconfig = new UltipaConfig()
{
Hosts = new[] { "192.168.1.85:60061", "192.168.1.86:60061", "192.168.1.87:60061" },
Username = "***",
Password = "***",
};
// Établit la connexion à la base de données
var ultipa = new Ultipa(myconfig);
var isSuccess = ultipa.Test();
Console.WriteLine(isSuccess);
// Configurations de requête
RequestConfig requestConfig = new RequestConfig() { Graph = "miniCircle", UseMaster = true };
// Récupère 10 noeuds et imprime la valeur de la propriété _id et name du premier renvoyé
var res = await ultipa.Uql(
"find().nodes({@movie}) as n return n{*} limit 10",
requestConfig
);
var nodeList = res?.Get(0).AsNodes();
if (nodeList[0].Values.TryGetValue("name", out object? value))
{
Console.WriteLine(value);
}
Console.WriteLine(nodeList[0].Id);
}
}