这部分主要是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 基本查询语法 二的更多相关文章

  1. dgraph 基本查询语法 一

    dgraph 的查询语法是在graphql 上的扩展,添加了新的支持,同时官方提供了一个 学习的网站 https://tour.dgraph.io/ 基本环境(cluster 模式的) 参考 gith ...

  2. dgraph 基本查询语法 三

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

  3. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  4. Neo4j的查询语法笔记(二)

    cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤,我们知识图谱的一期项目 基本开发完毕,后面会陆续总结学习一下neo4j相关的知识.今天接着上篇文章来看 ...

  5. 二:MVC之LINQ查询语法

    LINQ(Language Integrated Query)语言集成查询是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以操作内存数据的方式,查询数 ...

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

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

  7. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser

    一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...

  8. 第四章 MySQL高级查询(二)

    第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...

  9. Lucene的查询语法,JavaCC及QueryParser(1)

    http://www.cnblogs.com/forfuture1978/archive/2010/05/08/1730200.html 一.Lucene的查询语法 Lucene所支持的查询语法可见h ...

随机推荐

  1. JDK1.7 新特性

    1:switch中可以使用字串   String s = "test";   switch (s) {   case "test" :      System. ...

  2. oo第四篇博客作业

    测试与正确性论证的效果差异及各自的优缺点: 测试针对一些典型的输入情况进行方法验证,可操作性更强,结果直观.但不能完全覆盖所有的输入情况. 正确性论证则是根据代码逻辑从所有的方面对方法进行论证,可操作 ...

  3. EBS R12使用接口表往已存在的供应商地址下创建新的地点

    在供应商 "测试供应商A" 下已经有了两个地址,分别为 "地址A","地址B",现在由于某些原因,需要在地址A下面创建新的地点. 由于业务需 ...

  4. OC Copy自定义类

  5. consumer的DubboClientHandler线程池

    1. 创建线程池 创建线程池的调用栈如下: SimpleDataStore把线程池存放在map中. public class NettyClient extends AbstractClient { ...

  6. 快速切题 sgu105. Div 3 数学归纳 数位+整除 难度:0

    105. Div 3 time limit per test: 0.25 sec. memory limit per test: 4096 KB There is sequence 1, 12, 12 ...

  7. python笔记02:列表与元素

    本章将引入一个新的概念:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合.这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构是序 ...

  8. 双击打开excel时提示:向程序发送命令时出现问题

    重装Excel.Office无效 解决方法如下: 打开excel-excel选项-高级选项卡, 找到最下面的常规-忽略使用动态数据交换(DDE)的其他应用程序,去掉前面的勾勾,保存即可.

  9. 20165210 Java第八周学习总结

    20165210 Java第八周学习总结 教材内容学习 - 第十二章学习总结 进程与线程 操作系统与进程 Java中的线程 Java的多线程机制 主线程 线程的状态与生命周期 1. 新建 2. 运行 ...

  10. L219 China's office workers consider further education, training essential

    More than 90 percent of China's office workers consider on-the-job training and continuing education ...