推特 阿里云技术文档正文

.Net_SDK参考_图数据库GDB

admin 阿里云技术文档 2020-02-11 205 0
阿里云服务器优惠

.Net

本文介绍如何基于.NET编程环境连接和操作图数据库GDB。

进行以下操作时,请确保您的图数据库GDB实例与您的ECS虚拟机处于同一个VPC网络环境。

环境准备

1、请在运行以下范例之前

  • 请安装版本在2.0以上的dotnet环境
  • 如果使用windows开发环境,请使用windows8以上的OS版本

2、执行.Net命令生成console工程gremlinTest

  1. dotnet new console -o gremlinTest

3、进入该工程目录

  1. cd gremlinTest

4、为您的程序工程来安装Gremlin的SDK依赖Gremlin.NET

  1. dotnet add package gremlin.net

5、编辑Program.cs文件

将内容替换如下,需要将配置信息替换成您的图数据库实例的相关信息:

  • ${your-gdb-endpoint}改为您的图数据库GDB实例的域名
  • ${username}改为您的图数据库GDB实例的用户名
  • ${password}改为您的图数据库GDB实例的密码
  1. using System;
  2. using System.Threading.Tasks;
  3. using System.Collections.Generic;
  4. using Gremlin.Net;
  5. using Gremlin.Net.Driver;
  6. namespace gremlinTest
  7. {
  8. class Program
  9. {
  10. private static string endpoint = "${your_gdb_endpoint}";
  11. private static int port = 8182;
  12. private static string username = "${username}";
  13. private static string password = "${password}";
  14. static void Main(string[] args)
  15. {
  16. try
  17. {
  18. var gremlinServer = new GremlinServer(endpoint, port, username: username, password: password);
  19. var gremlinClient = new GremlinClient(gremlinServer);
  20. Program program = new Program();
  21. program.RunQueryAsync(gremlinClient).Wait();
  22. }
  23. catch (Exception e)
  24. {
  25. Console.WriteLine("{0}", e);
  26. }
  27. }
  28. private async Task RunQueryAsync(GremlinClient gremlinClient)
  29. {
  30. var vertices = await gremlinClient.SubmitWithSingleResultAsync<dynamic>("g.V().limit(1)");
  31. Console.WriteLine("{0}", vertices);
  32. }
  33. }
  34. }

连接并执行

  • 运行命令执行程序,输出结果的范例如下
  1. v[3a63cc90-d957-4324-9ffc-16a8e4c1c1f4]

  1. 删除指定label的点、边

    1. g.E().hasLabel('gdb_sample_knows').drop()
    2. g.E().hasLabel('gdb_sample_created').drop()
    3. g.V().hasLabel('gdb_sample_person').drop()
    4. g.V().hasLabel('gdb_sample_software').drop()
  2. 添加顶点,为其设置id、property

    1. g.addV('gdb_sample_person').property(id, 'gdb_sample_marko').property('age', 28).property('name', 'marko')
    2. g.addV('gdb_sample_person').property(id, 'gdb_sample_vadas').property('age', 27).property('name', 'vadas')
    3. g.addV('gdb_sample_person').property(id, 'gdb_sample_josh').property('age', 32).property('name', 'josh')
    4. g.addV('gdb_sample_person').property(id, 'gdb_sample_peter').property('age', 35).property('name', 'peter')
    5. g.addV('gdb_sample_software').property(id, 'gdb_sample_lop').property('lang', 'java').property('name', 'lop')
    6. g.addV('gdb_sample_software').property(id, 'gdb_sample_ripple').property('lang', 'java').property('name', 'ripple')
  3. 修改(或新增) age 属性

    1. g.V('gdb_sample_marko').property('age', 29)
  4. 建立关系,设置属性 weight

    1. g.addE('gdb_sample_knows').from(V('gdb_sample_marko')).to(V('gdb_sample_vadas')).property('weight', 0.5f)
    2. g.addE('gdb_sample_knows').from(V('gdb_sample_marko')).to(V('gdb_sample_josh')).property('weight', 1.0f)
    3. g.addE('gdb_sample_created').from(V('gdb_sample_marko')).to(V('gdb_sample_lop')).property('weight', 0.4f)
    4. g.addE('gdb_sample_created').from(V('gdb_sample_josh')).to(V('gdb_sample_lop')).property('weight', 0.4f)
    5. g.addE('gdb_sample_created').from(V('gdb_sample_josh')).to(V('gdb_sample_ripple')).property('weight', 1.0f)
    6. g.addE('gdb_sample_created').from(V('gdb_sample_peter')).to(V('gdb_sample_lop')).property('weight', 0.2f)
  5. 查询所有点/指定label的点数量

    1. g.V().count()
    2. g.V().hasLabel('gdb_sample_person').count()
  6. 查询指定条件的顶点 (>29岁的人, 按name降序排列所有人)

    1. g.V().hasLabel('gdb_sample_person').has('age', gt(29))
    2. g.V().hasLabel('gdb_sample_person').order().by('name', decr)
  7. 关联查询(获取 marko 认识的人, marko认识的人created的software)

    1. g.V('gdb_sample_marko').outE('gdb_sample_knows').inV().hasLabel('gdb_sample_person')
    2. g.V('gdb_sample_marko').outE('gdb_sample_knows').inV().hasLabel('gdb_sample_person').outE('gdb_sample_created').inV().hasLabel('gdb_sample_software')
  8. 删除关系、顶点

    1. g.V('gdb_sample_marko').outE('gdb_sample_knows').where(inV().has(id, 'gdb_sample_josh')).drop()
    2. g.V('gdb_sample_marko').drop()

有关Gremlin.Net使用方式的更多信息,请参阅Apache TinkerPop3文档中的Gremlin.Net

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

-----