这部分主要是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. 20170112xlVBA查询SQL

    Sub NextSeven_CodeFrame() '应用程序设置 Application.ScreenUpdating = False Application.DisplayAlerts = Fal ...

  2. Html显示地图

    Html可以通过JS来实现第三方地图的显示,如: 高德: 效果如下:浏览器小区域和全屏展示 代码如下:把key换成自己申请的key值 <script type="text/javasc ...

  3. Confluence 6 从 Crowd 或 JIRA 应用中切换回使用内部用户管理

    如果你的 Confluence 站点当前使用的是 Crowd 或者 Jira 应用程序管理你的用的话,你可以按照下面的步骤切换使用回内部目录管理你的用户. 如果你的 Confluence 站点只有少量 ...

  4. 将 HttpPostedFile 转换成 Image 或者 Bitmap

    代码如下: HttpFileCollection httpfiles = context.Request.Files; files = httpfiles[i]; Image im = Image.F ...

  5. LOV抛出值无效的异常

    在选择LOV中的行返回之后,点击提交的时候始终报值无效的异常. 症状:LOV中有值为   XXX项目,XXX项目(一期) 的时候,当你选择XXX项目 再进行提交,老是报出值无效的异常. 解决方式:在页 ...

  6. DB2 的事务日志

    1.     DB2事务日志:DB2的日志分主日志和次日志,主日志是在数据库第一次被连接和激活时创建的,而次日志是当写满所有的主日志后,才动态分配次日志,主日志和次日志受设置个数的制约,当配置的所有主 ...

  7. 从零开始学习Vue(一)

    因为最近有个项目的需求是,微信公众号+IOS/Android APP, 界面都很类似. 以往的做法是APP是调用JSON接口,后台只负责提供接口. 而H5,我以前都是用Jquery,用来写手机网站总是 ...

  8. 51nod1671

    题解: 这一题感觉和noip2015d2t3一模一样,而且是弱化版 但是,后来发现貌似每两个点都可以建立虫洞 好在是i和i+1有边,所以就直接用二分+贪心了 代码: #include<bits/ ...

  9. python 加密 解密 签名 验证签名 公钥 私钥 非对称加密 RSA

    加密与解密,这很重要,我们已经可以用pypcap+npcap简单嗅探到网络中的数据包了.而这个工具其实可以嗅探到更多的数据.如果我们和别人之间传输的数据被别人嗅探到,那么信息泄漏,信息被篡改,将给我们 ...

  10. 【DevExpress v17.2新功能预告】改进DevExtreme编辑器

    DevExpress即将发布v17.2版本,在DevExtreme v17.2中,DevExtreme编辑器进行了一些改进. 除了dxScheduler,dxDataGrid,dxTreeList和d ...