dgraph 基本查询语法 二
这部分主要是mutation 操作,(就是增加、删除操作)
参考git 项目 https://github.com/rongfengliang/dgraph-docker-compose-deploy
schema 操作
包含以下操作:
- 添加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 格式
- 参考格式
_:myID <an_edge> "something"@en .
_:myID <an_edge> "某物"@zh-Hans .
json 格式
{
        "set": [
            {
                "uid": "_:myID",
                "an_edge@en": "something",
                "an_edge@zh-Hans": "某物"
            }
        ]
}反向边
边是有方向的,查询不能进行反向转换,有两种方式可以进行双向查询
- 给schema 添加反向边,同时添加给所有数据
- 使用@reverse 关键字告诉dgraph 一直存储反向边
- 参考格式
boss_of: uid @reverse .删除数据
包含三种方式删除数据
- /"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 查询
查询节点外部边的名称
参考格式:
{
  company(func: allofterms(name, "CompanyABC")) {
    _predicate_
  }
}

expand Predicate
查询所有Predicate,类似列出所有数据
参考格式:
{
  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/
dgraph 基本查询语法 二的更多相关文章
- dgraph 基本查询语法 一
		dgraph 的查询语法是在graphql 上的扩展,添加了新的支持,同时官方提供了一个 学习的网站 https://tour.dgraph.io/ 基本环境(cluster 模式的) 参考 gith ... 
- dgraph 基本查询语法 三
		这部分主要是查询块.查询变量.聚合操作 多名称查询 实际上就是类似多个查询数据的拼接 格式: { caro(func: allofterms(name@en, "Marc Caro" ... 
- MySQL之单表查询    一 单表查询的语法     二 关键字的执行优先级(重点)     三 简单查询     四 WHERE约束     五 分组查询:GROUP BY     六 HAVING过滤     七 查询排序:ORDER BY     八 限制查询的记录数:LIMIT     九 使用正则表达式查询
		MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ... 
- Neo4j的查询语法笔记(二)
		cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤,我们知识图谱的一期项目 基本开发完毕,后面会陆续总结学习一下neo4j相关的知识.今天接着上篇文章来看 ... 
- 二:MVC之LINQ查询语法
		LINQ(Language Integrated Query)语言集成查询是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以操作内存数据的方式,查询数 ... 
- 1-3 - C#语言习惯 - 推荐使用查询语法而不是循环
		C#语言中并不缺少控制程序流程的结构,for.while.do-while和foreach等都可以做到这点. 历史上所有计算机语言设计者都不曾遗漏这些重要的循环控制结构. 不过我们还有一个更好的方式: ... 
- Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser
		一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ... 
- 第四章 MySQL高级查询(二)
		第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ... 
- Lucene的查询语法,JavaCC及QueryParser(1)
		http://www.cnblogs.com/forfuture1978/archive/2010/05/08/1730200.html 一.Lucene的查询语法 Lucene所支持的查询语法可见h ... 
随机推荐
- android--------验证码倒计时
			在我们注册或者修改信息的时候,常会用到60s倒计时这个功能,写了这篇文章,大家共享一下: 效果图: 直接上代码: activity.java public class MainActivity ext ... 
- IDEA设置类、方法注释模板
			类注释模板 File -> Other Setting -> Default Setting打开默认设置 Editor -> File and Code Templates -> ... 
- 『Os』常用方法记录
			os.rename(name_old, name_new) 『Scrapy』爬取斗鱼主播头像 重命名函数os.rename比win下的重命名强多了,它可以对路径重命名达到修改文件位置的功效. os.p ... 
- hdu1686字符串kmp
			The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e ... 
- python-day30--粘包
			一. 什么是粘包 1.须知:只有TCP有粘包现象,UDP永远不会粘包 2.所谓粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的. 二.两种情况下会发生粘包. 1. ... 
- OAF多语言的实现
			在之前的文章中转载了一篇关于多语言实现的文章. OAF中多语言的实现(转) 现在我来讲讲另外一种情况. 在建立工程项目没有特别选择语言,所以所有的PG或RN页面都是英文的,在页面原文件中可看到如下内容 ... 
- SDL检查
			在用 Visual Studio 编译比较早的代码时,经常会遇到错误: 错误 C4996 'wcscpy': This function or variable may be unsafe. Cons ... 
- 微信小程序wx.chooseImage和wx.previewImage的综合使用(图片上传不限制最多张数)
			WXML: <view class="weui"> <view class="weui-uploader"> <view clas ... 
- vue-router如何做历史返回提示?
			获取vue-router的上一个页面是否存在或者是否是自己需要返回的地址,可以使用vue-router的的声明周期函数,有三种模式: 第一种.使用全局函数beforeEach,直接来获取form.pa ... 
- bzoj2209
			题解: splay打标机 往下传递 记录x,y为化简后,区间有多少(,) 代码: #include<bits/stdc++.h> ; using namespace std; ],sum[ ... 
