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/

 
 
 
 

dgraph 基本查询语法 一的更多相关文章

  1. dgraph 基本查询语法 三

    这部分主要是查询块.查询变量.聚合操作 多名称查询 实际上就是类似多个查询数据的拼接 格式: { caro(func: allofterms(name@en, "Marc Caro" ...

  2. dgraph 基本查询语法 二

    这部分主要是mutation 操作,(就是增加.删除操作) 参考git 项目 https://github.com/rongfengliang/dgraph-docker-compose-deploy ...

  3. 1-3 - C#语言习惯 - 推荐使用查询语法而不是循环

    C#语言中并不缺少控制程序流程的结构,for.while.do-while和foreach等都可以做到这点. 历史上所有计算机语言设计者都不曾遗漏这些重要的循环控制结构. 不过我们还有一个更好的方式: ...

  4. .NET LINQ查询语法与方法语法

    LINQ 查询语法与方法语法      通过使用 C# 3.0 中引入的声明性查询语法,介绍性 LINQ 文档中的多数查询都被编写为查询表达式. 但是,.NET 公共语言运行时 (CLR) 本身并不具 ...

  5. Entity Framework 基于方法的查询语法

      实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发 ...

  6. Lucene查询语法详解

    Lucene查询 Lucene查询语法以可读的方式书写,然后使用JavaCC进行词法转换,转换成机器可识别的查询. 下面着重介绍下Lucene支持的查询: Terms词语查询 词语搜索,支持 单词 和 ...

  7. LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法

    介绍    ·Select - Select选择:延迟    ·Where - Where查询:延迟    ·OrderBy - 按指定表达式对集合正序排序:延迟    ·OrderByDescend ...

  8. google hack 之 查询语法

    google hack 之 查询语法 文/玄魂   前言 谷歌网页搜索技术,大部分在百度等搜索引擎中也适用.同样,这些搜索技术是来源于传统数据库检索技术,因而,对这部分的学习,能为后续章节的数据库检索 ...

  9. Apache Solr查询语法(转)

    查询参数 常用: q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多个. start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用. rows - 指 ...

随机推荐

  1. 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用

    加密技术通常分为两大类:"对称式"和"非对称式". 对称性加密算法:对称式加密就是加密和解密使用同一个密钥.信息接收双方都需事先知道密匙和加解密算法且其密匙是相 ...

  2. 遍历页面上主从表中从table中的内容

    //如果在建VL的时候没有建访问器.从主表行拿到从表VO的行级不太好搞的 OAAdvancedTableBean innerTable = (OAAdvancedTableBean)webBean.f ...

  3. 使用SAE(VAE)检测信用卡欺诈——感觉误报率还是比较高啊 70%+误报 蛋疼

    from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScale ...

  4. tensorflow安装相关问题

    安装步骤 要求:Python必须是64位根据TensorFlow的计算方式,TensorFlow的安装分为CPU版本和GPU版本对于Python3.5或者Python3.6,可以使用pip insta ...

  5. ReactJS环境搭建

    1.ReactJs 需要依赖nodejs环境,如果没有安装nodejs的话,需要安装.下载地址:https://nodejs.org/en/download/ 下载下来之后,安装windows版本的m ...

  6. 根据id来实现小程序tab切换,

    本例根据绑定id来实现tab切换,但本例仍有缺陷,用for循环数据,无法实现切换.如有大神能够有更好方法,欢迎留言更正 WXML: <view class="tab"> ...

  7. jsp jsp九个内置对象

       每个JSP页面在第一次被访问的时候,WEB容器都会把请求交给JSP引擎(即一个JAVA)程序.JSP引擎先将JSP翻译成一个_jspServlet实质也是一次servlet,然后按照 Servl ...

  8. Transfer files Using sshpass

    #! /bin/bash user=root password=12345678 remote_ip=192.168.3.140 remote_dir=/usr/bin/ local_file_dir ...

  9. ECharts报表的使用

    知道你们懒得手打网址,给你们贴上:http://echarts.baidu.com/echarts2/ 1.下载并解压之后,找到echarts-2.2.7\build\dist\echarts-all ...

  10. L212

    Just 33 minutes into the New Year, NASA's New Horizons probe made space exploration history, flying ...