dgraph 基本查詢語法 二

這部分主要是mutation 操做,(就是增長、刪除操做)git

參考git 項目 https://github.com/rongfengliang/dgraph-docker-compose-deploygithub

schema 操做

包含如下操做:docker

  • 添加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 格式json

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

反向邊

邊是有方向的,查詢不能進行反向轉換,有兩種方式能夠進行雙向查詢ui

  • 給schema 添加反向邊,同時添加給全部數據
  • 使用@reverse 關鍵字告訴dgraph 一直存儲反向邊
  • 參考格式
boss_of: uid @reverse .

刪除數據

包含三種方式刪除數據url

  • /"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 查詢

查詢節點外部邊的名稱spa

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

expand Predicate

查詢全部Predicate,相似列出全部數據.net

參考格式:
{
  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/code

相關文章
相關標籤/搜索