dgraph 基本查詢語法 一


dgraph 的查詢語法是在graphql 上的擴展,添加了新的支持,同時官方提供了一個
學習的網站 https://tour.dgraph.io/

基本環境(cluster 模式的)

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

git clone https://github.com/rongfengliang/dgraph-docker-compose-deploy
cd dgraph-docker-compose-deploy/one-zero
docker-compose up -d

基本使用

  • 加載schema
name: string @index(term) @lang .
age: int @index(int) .
friend: uid @count .
  • 加載數據
{
  set {
    _:michael <name> "Michael" .
    _:michael <age> "39" .
    _:michael <friend> _:amit .
    _:michael <friend> _:sarah .
    _:michael <friend> _:sang .
    _:michael <friend> _:catalina .
    _:michael <friend> _:artyom .
    _:michael <owns_pet> _:rammy .

    _:amit <name> "अमित"@hi .
    _:amit <name> "অমিত"@bn .
    _:amit <name> "Amit"@en .
    _:amit <age> "35" .
    _:amit <friend> _:michael .
    _:amit <friend> _:sang .
    _:amit <friend> _:artyom .

    _:luke <name> "Luke"@en .
    _:luke <name> "Łukasz"@pl .
    _:luke <age> "77" .

    _:artyom <name> "Артём"@ru .
    _:artyom <name> "Artyom"@en .
    _:artyom <age> "35" .

    _:sarah <name> "Sarah" .
    _:sarah <age> "55" .

    _:sang <name> "상현"@ko .
    _:sang <name> "Sang Hyun"@en .
    _:sang <age> "24" .
    _:sang <friend> _:amit .
    _:sang <friend> _:catalina .
    _:sang <friend> _:hyung .
    _:sang <owns_pet> _:goldie .

    _:hyung <name> "형신"@ko .
    _:hyung <name> "Hyung Sin"@en .
    _:hyung <friend> _:sang .

    _:catalina <name> "Catalina" .
    _:catalina <age> "19" .
    _:catalina <friend> _:sang .
    _:catalina <owns_pet> _:perro .

    _:rammy <name> "Rammy the sheep" .

    _:goldie <name> "Goldie" .

    _:perro <name> "Perro" .
  }
}
  • 基本查詢
{
  everyone(func: anyofterms(name, "Michael Amit")) {
    name
    friend {
      name@ru:ko:en
      friend { expand(_all_) { expand(_all_) } }
    }
  }
}

  • 數據類型查詢
 schema(pred: [name, age, friend, owns_pet]) {
  type
  index
}

  • 語言支持
<name>@<lan>
參考:
{
  language_support(func: allofterms(name@hi, "अमित")) {
    name@bn:hi:en
    age
    friend {
      name@ko:ru
      age
    }
  }
}

  • 函數&&過濾
內容查詢
- allOfTerms(edge_name, "term1 ... termN")
- anyOfTerms(edge_name, "term1 ... termN") 
比較查詢
- eq(edge_name, value):  
- ge(edge_name, value):  
- le(edge_name, value):  
- gt(edge_name, value): 
- lt(edge_name, value):  
  • AND OR NOT 查詢
參考:
{
  michael_friends_and(func: allofterms(name, "Michael")) {
    name
    age
    friend @filter(ge(age, 27) AND le(age, 48)) {
      name@.
      age
    }
  }
}
  • 排序
orderasc or orderdesc
{
  michael_friends_sorted(func: allofterms(name, "Michael")) {
    name
    age
    friend (orderasc: age) {
      name@.
      age
    }
  }
}

  • 分頁
first: N  
offset: N  
after: uid  
參考:
{
  michael_friends_first(func: allofterms(name, "Michael")) {
    name
    age
    friend (orderasc: name@., offset: 1, first: 2) {
      name@.
    }
  }
}

  • count
{
  michael_number_friends(func: allofterms(name, "Michael")) {
    name
    age
    count(friend)
  }
}

  • has
{
  have_friends(func: has(friend)) {
    name@.
    age
    number_of_friends : count(friend)
  }
}

  • 別名(和graphql 一致)
{
  michael_number_friends(func: allofterms(name, "Michael")) {
    persons_name : name
    age
    number_of_friends : count(friend)
  }
}

參考資料

https://tour.dgraph.io/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM