码迷,mamicode.com
首页 > 其他好文 > 详细

dgraph实现基本操作

时间:2019-03-03 22:35:55      阅读:768      评论:0      收藏:0      [点我收藏+]

标签:属性   done   简单   进入   ttf   name   没有   set   关于   

dgraph实现基本操作

简单介绍

dgraph 是一个分布式图数据库

mutate 为一个突变, 一般认为添加数据或者是删除数据为一个突变

query 为一个查询

创建基础数据库

{
set {
_:wangha <name> "wangha" .
_:wangha <age> "17" .
_:wangha <from> "China" .
_:wangha <usernameOFen> "wangha" .
_:wangha <usernameOFcn> "王哈" .
_:wangha <usernameOFjp> "王ハ" .
_:wangha <friend> _:cyc .
_:wangha <friend> _:xhe .

_:cyc <name> "chenchao" .
_:cyc <age> "18" .
_:cyc <from> "China" .
_:cyc <usernameOFen> "ChaoChen" .
_:cyc <usernameOFcn> "陈超" .

_:xhe <name> "xhe" .
_:xhe <age> "18" .
_:xhe <from> "Japan" .
_:xhe <usernameOFcn> "x鹤" .

_:cxy <name> "changyang" .
_:cxy <age> "19" .
_:cxy <from> "England" .
_:cxy <usernameOFcn> "常飏" .
_:cxy <friend> _:ttfq .

_:ttfq <name> "yetao" .
_:ttfq <age> "18" .
_:ttfq <from> "Russian" .
_:ttfq <usernameOFen> "TaoYe" .
_:ttfq <usernameOFcn> "叶掏" .
_:ttfq <friend> _:xhe .
}
}

技术图片

看到右边出现Done. 说明添加完成

由于此处, 我使用的是http客户端, 需要自己设置表的一些属性, goClient等可代码实现.

设置在Schema中, 设置如下:

技术图片

在默认的时候, 各元素都为default, 需要全部自己修改为string类型,并且设置index(索引), 在dgraph中, 只有被设置为索引的元素才可被查询.

查询

dgraph提供了丰富的query语句, 可见官网

此处我们假设查询有关于username="wangha"的各种信息.

{
  aboutme(func:eq(usernameOFen,"wangha")){
    uid
    name
    usernameOFcn
    usernameOFen
    usernameOFjp
  }
}

得到结果如下:

技术图片

其实还有更加简单的办法, 用于查询信息.

{
  aboutme(func:eq(usernameOFen,"wangha")){
    expand(_all_)
  }
}

添加节点

此时, 又进入了一位新朋友 yaodao , 我需要将他加入数据库, 而且他存在 < friend > 为 **:wangha** , 那么此时, 我需要首先获得 :wangha 的uid , 随后将其加入数据库

获取wangha的uid

{
  wanghauid(func:eq(usernameOFen,"wangha")){
    uid
  }
}

得到wangha的uid为 "uid": "0x2"

将新朋友的数据插入

{
set {
_:yaodao <name> "yaozhao" .
_:yaodao <age> "24" .
_:yaodao <from> "M78Star" .
_:yaodao <usernameOFen> "ZhaoYao" .
_:yaodao <usernameOFcn> "姚X" .
_:yaodao <usernameOFjp> "姚飞机" .
_:yaodao <friend> <0x2> .
}
}

当然, 可以使用别的方式, 比方说:

  1. 将yaodao的信息插入
  2. 获取yaodao的uid
  3. 插入<yaodao的uid> <friend> <wangha的uid>

此时, 可以查看yaodao的朋友

{
  yaodaofriends(func:eq(name,"yaozhao")){
    friend{
      uid
      name
      usernameOFcn
    }
  }
}

结果如下:

技术图片

更新数据

比如此时yaodao的数据有错, age应该为22

查询yaodao的uid

{
  yaodaofriends(func:eq(name,"yaozhao")){
    uid
  }
}

得到结果: "uid": "0x10"

更新数据

{
set {
<0x10> <age> "22" .
}
}

验证看看结果:

技术图片

没有任何问题.

删除

比如, 此时, yaodao强烈要求我删除他的数据.

所以, 没办法了...

{
delete {
<0x10> * * .
}
}

此时, 我再回去query

技术图片

发现除了uid, 其他所有的数据已经没了

dgraph实现基本操作

标签:属性   done   简单   进入   ttf   name   没有   set   关于   

原文地址:https://www.cnblogs.com/wangha/p/10467915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!