dgraph 基本查询语法 三
这部分主要是查询块、查询变量、聚合操作
多名称查询
实际上就是类似多个查询数据的拼接
格式:
{
  caro(func: allofterms(name@en, "Marc Caro")) {
    name@en
    director.film {
      name@en
    }
  }
  jeunet(func: allofterms(name@en, "Jean-Pierre Jeunet")) {
    name@en
    director.film {
      name@en
    }
  }
}
查询变量
类似graphql 总的input 变量,但是查询变量更方便,可以理解为sql 的存储过程,或者编程中的函数
var_name as some_block { ... }
查询变量数据的引用
查询变量的数据可以传递给子查询block 使用,这点相比graphql 的方式有很大的方便
参考格式:
{
  coactors(func:allofterms(name@en, "Jane Campion")) @cascade {
    JC_films as director.film { # JC_films = all Jane Campion's films
      starting_movie: name@en
      starring {
        JC_actors as performance.actor { # JC_actors = all actors in all JC films
          actor : name@en
          actor.film {
            performance.film @filter(not uid(JC_films)) {
              film_together : name@en
              starring {
                # find a coactor who has been in some JC film
                performance.actor @filter(uid(JC_actors)) {
                  coactor_name: name@en
                }
              }
            }
          }
        }
      }
    }
  }
}
指变量(min max)
使用min max 可以获取变量的最大或者最小指
参考格式:
{
  q(func: allofterms(name@en, "Ang Lee")) {
    director.film {
      uid
      name@en
      # Count the number of starring edges for each film
      num_actors as count(starring)
      # In this block, num_actors is the value calculated for this film.
      # The film with uid and name
    }
    # Here num_actors is a map of film uid to value for all
    # of Ang Lee's films
    #
    # It can't be used directly, but aggregations like min and max
    # work over all the values in the map
    most_actors : max(val(num_actors))
  }
  # to use num_actors in another query, make sure it's done in a context
  # where the film uid to value map makes sense.
}
指变量(sum avg)
可以获取变量的sum 以及avg
参考格式:
{
  ID as var(func: allofterms(name@en, "Steven Spielberg")) {
    # count the actors and save to a variable
    # average as ...
  }
  # average is a map from uid to value so it must be used in a context
  # where the map makes sense. Because query block avs works over the UID
  # of Steven Spielberg, the value variable has the value we expect.
  avs(func: uid(ID)) @normalize {
    name : name@en
    # get the average
    # also count the movies
  }
}
指变量 filter order
指变量可以应用filter以及order 操作
参考格式:
{
  ID as var(func: allofterms(name@en, "Steven")) {
    director.film {
      num_actors as count(starring)
    }
    average as avg(val(num_actors))
  }
  avs(func: uid(ID), orderdesc: val(average)) @filter(ge(val(average), 40)) @normalize {
    name : name@en
    average_actors : val(average)
    num_films : count(director.film)
  }
}
指变量 math
dgraph 内置math 函数操作,可以进行一些常见的+ / - 以及sin 。。。。 操作
参考格式:
{
 var(func:allofterms(name@en, "Jean-Pierre Jeunet")) {
  name@en
  films as director.film {
   stars as count(starring)
   directors as count(~director.film)
   ratio as math(stars / directors)
  }
 }
 best_ratio(func: uid(films), orderdesc: val(ratio)){
  name@en
  stars_per_director : val(ratio)
  num_stars : val(stars)
 }
}
groupby 操作
类似sql 的groupby 操作,groupby 代码块内部操作只能应用到聚合函数上,同时count 只能 
应用到uid 上,同时可以方便的通过变量应用到其他查询中
参考格式:
{
  var(func:allofterms(name@en, "Steven Spielberg")) {
    director.film @groupby(genre) {
      a as count(uid)
    }
  }
  byGenre(func: uid(a), orderdesc: val(a)) {
    name@en
    num_movies : val(a)
  }
}
参考资料
https://tour.dgraph.io/blocksvars/1/ 
https://github.com/rongfengliang/dgraph-docker-compose-deploy
dgraph 基本查询语法 三的更多相关文章
- dgraph 基本查询语法 一
		dgraph 的查询语法是在graphql 上的扩展,添加了新的支持,同时官方提供了一个 学习的网站 https://tour.dgraph.io/ 基本环境(cluster 模式的) 参考 gith ... 
- dgraph 基本查询语法 二
		这部分主要是mutation 操作,(就是增加.删除操作) 参考git 项目 https://github.com/rongfengliang/dgraph-docker-compose-deploy ... 
- ThinkPHP 数据库操作(三) : 查询方法、查询语法、链式操作
		查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%th ... 
- Entity Framework 基于方法的查询语法
		实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发 ... 
- LINQ to Entities 查询语法
		转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET ... 
- Linq 标准查询操作符三
		本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰 ... 
- Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser
		一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ... 
- solr总结 第六部分:solr查询语法
		1.基本查询语法 q:全文查询.schema.xml里面定义了如下两块.eg q=ibm即表示org_name或者org_weisite里面出现ibm的document都可以被匹配到.KeyWords ... 
- EF基于方法的查询语法
		实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发人员 ... 
随机推荐
- Confluence 6 的高级 Crowd 设置
			启用嵌套用户组(Enable Nested Groups) 为嵌套组启用或禁用支持. 在启用嵌套用户组之前,你需要检查你在 Crowd 中定义的目录能够支持嵌套用户组.当嵌套用户组启用成功后,你可以将 ... 
- poj2686 状压dp入门
			状压dp第一题:很多东西没看懂,慢慢来,状压dp主要运用了位运算,二进制处理 集合{0,1,2,3,....,n-1}的子集可以用下面的方法编码成整数 像这样,一些集合运算就可以用如下的方法来操作: ... 
- python-day17--生成器
			1.本质:就是迭代器 2.生成器函数: def func(): a=1 b=2 yield a #要返回的第一个值 yield b #要返回的第二个值 ret = func() #拿到一个生成器pri ... 
- ASP.NET的路由系统
			一.URL与物理文件的分离 1.URL与物理文件的分离 对于一个 ASP.NET Web Form应用来说,任何一个请求都对应着某个具体的物理文件.部署在Web服务器上的物理文件可以是静态的(比如图片 ... 
- 提高C++程序运行效率的10个简单方法
			转载: 一.尽量减少值传递,多用引用来传递参数.至于其中的原因,相信大家也很清楚,如果参数是int等语言自定义的类型可能能性能的影响还不是很大,但是如果参数是一个类的对象,那么其效率问题就不言而喻了. ... 
- SQL基础用法(实例一)
			/* 2006年10月01日 SQL Server 数据库的基本操作 (1) 数据库的创建 (2) 数据表的创建以及相关约束的指定(含临时表) (3) 数据的添/删/改 (4) 数据的查询 */ () ... 
- Edraw安装图解
			Edraw安装图解 Success 
- win10 移动热点自动关闭
			解决win10移动热点自动关闭 
- onmouseover和onmouseout的bug
			脑子不好用了,一点东西要看几遍才能记住,学过的东西也要好几遍,悲哀. 习惯了jquery的hover,或者看过hover源码,或者是正美的<框架设计>,onmouseover和onmous ... 
- vue-router如何做历史返回提示?
			获取vue-router的上一个页面是否存在或者是否是自己需要返回的地址,可以使用vue-router的的声明周期函数,有三种模式: 第一种.使用全局函数beforeEach,直接来获取form.pa ... 
