这部分主要是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. 20170719xlVBASmartIndent

    Public Sub SmartIndenterProcedure() Dim OneComp As VBComponent Dim StartLine As Long, EndLine As Lon ...

  2. android------锁屏(手机启动出现锁屏界面)

    以前用过一个红包锁屏的软件,第一次打开手机出现锁屏,滑动领取收益,当时觉得这功能不错,就查阅资料,写了一个案例, apk运行流程: 进入软件--->启动服务--->关闭手机(可先退出应用) ...

  3. linux 不解压日志压缩包直接搜索里面的内容

  4. laravel 懒加载

    故事背景是什么呢? 目录大家都知道吧,一般有几个层级,根据公司需求,要将目录以树的形式展示出来,为了提高访问速度,这些目录数据要一次性读取出来的.这样的话就涉及到了查询,优化查询次数是一个很关键的事情 ...

  5. 『Python』pycharm常用设置

    学习一下pycharm的快捷操作,提升速度,也提升舒适度,笑. 常用快捷键 ctrl + d :复制粘贴本行到下一行 ctrl + y :删除本行 ctrl + 鼠标点击 :跳转 ctrl + / : ...

  6. Python进阶--常用模块

    一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...

  7. python-day21--sys模块

    sys模块是与python解释器交互的一个接口 1.sys.argv           命令行参数List,第一个元素是程序本身路径     # 传参 应用场景:权限控制 2.sys.path    ...

  8. [LeetCode] 29. Divide Two Integers(不使用乘除取模,求两数相除) ☆☆☆

    转载:https://blog.csdn.net/Lynn_Baby/article/details/80624180 Given two integers dividend and divisor, ...

  9. nodejs初探一二

    概念 简单来说,node.js 是一个让 JavaScript 运行在服务端的开发平台,让开发者通过JS编写服务端程序. 安装 从nodeJS官网下载对应平台的安装程序,安装完成后,打开命令行工具,然 ...

  10. Vscode设置个人爱好

    Vscode设置个人爱好   插件列表 abusaidm.html-snippets-0.1.0 adamwalzer.string-converter-0.0.9 AESSoft.aessoft-c ...