zoukankan      html  css  js  c++  java
  • dgraph 基本查询语法 二

    这部分主要是mutation 操作,(就是增加、删除操作)

    参考git 项目 https://github.com/rongfengliang/dgraph-docker-compose-deploy

    schema 操作

    包含以下操作:

    • 添加schema
    • 修改schema(添加索引)
    参考操作
    industry: string @index(term) .
    boss_of: uid .

    添加数据

    • 说明
      dgraph 会给每个导入的数据添加一个内部id,同时也可以使用json 格式
    参考格式:
    {
      set {
        _:company1 <name> "CompanyABC" .
        _:company2 <name> "The other company" .
    
        _:company1 <industry> "Machinery" .
    
        _:company2 <industry> "High Tech" .
    
        _:jack <works_for> _:company1 .
        _:ivy <works_for> _:company1 .
        _:zoe <works_for> _:company1 .
    
        _:jose <works_for> _:company2 .
        _:alexei <works_for> _:company2 .
    
        _:ivy <boss_of> _:jack .
    
        _:alexei <boss_of> _:jose .
      }
    }
    json  格式:
    {
            "set": [
                {
                    "uid": "_:company1",
                    "industry": "Machinery",
                    "name": "CompanyABC"
                },
                {
                    "uid": "_:company2",
                    "industry": "High Tech",
                    "name": "The other company"
                },
                {
                    "uid": "_:jack",
                    "works_for": { "uid": "_:company1"},
                    "name": "Jack"
                },
                {
                    "uid": "_:ivy",
                    "works_for": { "uid": "_:company1"},
                    "boss_of": { "uid": "_:jack"},
                    "name": "Ivy"
                },
                {
                    "uid": "_:zoe",
                    "works_for": { "uid": "_:company1"},
                    "name": "Zoe"
                },
                {
                    "uid": "_:jose",
                    "works_for": { "uid": "_:company2"},
                    "name": "Jose"
                },
                {
                    "uid": "_:alexei",
                    "works_for": { "uid": "_:company2"},
                    "boss_of": { "uid": "_:jose"},
                    "name": "Alexei"
                }
            ]
        }

    • 外部id 说明
      dgraph 当前不支持外部id,可选的方式是将唯一标示做为数据的边(edge)

    语言支持

    可以使用语言标签进行不同语言的区分,格式 @lang ,支持使用json 格式

    • 参考格式
    _:myID <an_edge> "something"@en .
    _:myID <an_edge> "某物"@zh-Hans .
    json 格式
    {
            "set": [
                {
                    "uid": "_:myID",
                    "an_edge@en": "something",
                    "an_edge@zh-Hans": "某物"
                }
            ]
    }

    反向边

    边是有方向的,查询不能进行反向转换,有两种方式可以进行双向查询

    • 给schema 添加反向边,同时添加给所有数据
    • 使用@reverse 关键字告诉dgraph 一直存储反向边
    • 参考格式
    boss_of: uid @reverse .

    删除数据

    包含三种方式删除数据

    • /"value" . 删除单个三元组
    • * . 删除指定边的所有三元组
    • * * . 删除指定节点的三元组
    json 格式
    删除节点关联数据:
    {
            "delete": [
                {
                    "uid": "0xa"
                }
            ]
    }
    删除边的三原则(不删除子节点数据):
     {
            "delete": [
                {
                    "uid": "0xa",
                    "friends": null
                }
            ]
    }
    删除关系以及子节点数据
     {
            "delete": [
                {
                    "uid": "0x2", # Answer UID.
                    "comment": {
                       "uid": "0x3" # Comment.
                }
                },
                {
                    "uid": "0x3" #Comment final delation, cleaning the Answer's child.
                }
            ]
    }

    Predicate 查询

    查询节点外部边的名称

    参考格式:
    {
      company(func: allofterms(name, "CompanyABC")) {
        _predicate_
      }
    }
    

    expand Predicate

    查询所有Predicate,类似列出所有数据

    参考格式:
    {
      expand(func: allofterms(name, "Michael")) {
        expand(_all_) {
          expand(_all_) {
            expand(_all_)
          }
        }
      }
    }
    

    参考资料

    https://github.com/rongfengliang/dgraph-docker-compose-deploy
    https://tour.dgraph.io/schema/1/

  • 相关阅读:
    SA 的参数
    superobject中 JavaToDelphiDateTime的使用
    关于Linux下进程间使用共享内存和信号量通信的时的编译问题
    Linux匿名管道与命名管道
    C++复数四则运算的实现
    C++类编程(一)const的使用
    读书会思考与学期总结
    xenomai安装
    Xenomai 安装准备工作
    Xenomai
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/9695053.html
Copyright © 2011-2022 走看看