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/

 
 
 
 

最新文章

  1. Oracle 树操作(select…start with…connect by…prior)
  2. mysql 获取设置环境变量
  3. 面试题目“ABCDE &#215; 4 = EDCBA”新解法
  4. Js跳出循环
  5. vs2010快捷方式
  6. JPEGOPTIM压缩优化
  7. java类中获取ServletContext的方法
  8. JFinal极速开发框架使用笔记(二) 两个问题,一个发现
  9. ACM Strange fuction
  10. IntelliJ IDEA下的使用git
  11. jmeter5.1在windows(含插件安装)及linux环境下安装
  12. 【JavaScript】数组
  13. Chrome插件消息传递实例
  14. 第六篇:Eclipse上运行第一个Hadoop实例 - WordCount(单词统计程序)
  15. 【react路由】react 路由被自动加了个#
  16. 2019建模美赛B题(派送无人机)M奖论文
  17. css 清除float的方法
  18. tomcat(不仅仅是tomcat)通过熵池解决在linux启动应用慢
  19. JAVA GUI THREAD---***
  20. SVN 学习笔记-高级操作

热门文章

  1. LeetCode--111--最长公共前缀
  2. 20170706wdVBA正则表达式提取题目
  3. json.dumps loads 终于区分出来了
  4. 一、重写(覆盖)override
  5. Tomcat类加载器破坏双亲委派
  6. Grep console 设置
  7. .net大型分布式电子商务架构说明
  8. mybatis 传递多个值的解决办法
  9. C# unity 的 IInterceptionBehavior实现aop拦截器
  10. xitong