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 ...
随机推荐
- 20161226xlVBA演示文稿替换文字另存pdf
Const ModelText As String = "机构名称" Const ModelName As String = "测试文件.pptx" Sub N ...
- 12月16日 增加一个购物车内product数量的功能, 自定义method,在helper中定义,计算代码Refactor到Model中。
仿照Rails实战:购物网站 教材:5-6 step5:计算总价,做出在nav上显示购物车内product的数量. 遇到的❌: 1. <% sum = 0 %> <% current ...
- Android动画(Animations)
动画类型Android的animation由四种类型组成 XML中 alpha : 渐变透明度动画效果 scale :渐变尺寸伸缩动画效果 translate : 画面转换位置移动动画效果 ro ...
- 基于DOMContentLoaded实现文档加载完成后执行的方法
我们有时可能需要一些在页面加载完成之后执行的方法,其实js原生就提供了onload方法,所以我们最简单的办法就是直接给onload赋值一个函数,在页面加载完成之后就会自动执行 widnow.onloa ...
- 14西安区域赛C - The Problem Needs 3D Arrays
最大密度子图裸题,详情请见胡博涛论文: https://wenku.baidu.com/view/986baf00b52acfc789ebc9a9.html 不加当前弧优化t到死= = //#prag ...
- python-day39--数据库
1.什么是数据:描述事物的特征,提取对自己有用的信息 称之为数据 2..什么是数据库: 数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的 为什么要用数据库: ...
- 多态性&& 虚函数 && 抽象类
http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/11/2134673.html 多态性 指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动 ...
- DB2性能调优
1.更新统计信息 --更新数据库所有表统计信息 --连接到数据库(-v选项,表示要回显命令,以下同) db2 -v connect to DB_NAME --查看是否收集过统计信息,什么时候更新的 ...
- 设置MaskedTextBox控件的格式,掩码方式检验输入方式
#region 设置MaskedTextBox控件的格式,掩码方式检验输入方式 /// <summary> /// 将MaskedTextBox控件的格式设为yyyy-mm-dd格式. / ...
- Python 动态传参
def chi(zhushi, cai, fushi, tang, tiandian): print(zhushi,cai,fushi,tang,tiandian) chi("大碗大米饭&q ...