dgraph 的查询语法是在graphql 上的扩展,添加了新的支持,同时官方提供了一个
学习的网站 https://tour.dgraph.io/

基本环境(cluster 模式的)

参考 github 项目 https://github.com/rongfengliang/dgraph-docker-compose-deploy

git clone https://github.com/rongfengliang/dgraph-docker-compose-deploy
cd dgraph-docker-compose-deploy/one-zero
docker-compose up -d

基本使用

  • 加载schema
name: string @index(term) @lang .
age: int @index(int) .
friend: uid @count .
  • 加载数据
{
set {
_:michael <name> "Michael" .
_:michael <age> "39" .
_:michael <friend> _:amit .
_:michael <friend> _:sarah .
_:michael <friend> _:sang .
_:michael <friend> _:catalina .
_:michael <friend> _:artyom .
_:michael <owns_pet> _:rammy . _:amit <name> "अमित"@hi .
_:amit <name> "অমিত"@bn .
_:amit <name> "Amit"@en .
_:amit <age> "35" .
_:amit <friend> _:michael .
_:amit <friend> _:sang .
_:amit <friend> _:artyom . _:luke <name> "Luke"@en .
_:luke <name> "Łukasz"@pl .
_:luke <age> "77" . _:artyom <name> "Артём"@ru .
_:artyom <name> "Artyom"@en .
_:artyom <age> "35" . _:sarah <name> "Sarah" .
_:sarah <age> "55" . _:sang <name> "상현"@ko .
_:sang <name> "Sang Hyun"@en .
_:sang <age> "24" .
_:sang <friend> _:amit .
_:sang <friend> _:catalina .
_:sang <friend> _:hyung .
_:sang <owns_pet> _:goldie . _:hyung <name> "형신"@ko .
_:hyung <name> "Hyung Sin"@en .
_:hyung <friend> _:sang . _:catalina <name> "Catalina" .
_:catalina <age> "19" .
_:catalina <friend> _:sang .
_:catalina <owns_pet> _:perro . _:rammy <name> "Rammy the sheep" . _:goldie <name> "Goldie" . _:perro <name> "Perro" .
}
}
  • 基本查询
{
everyone(func: anyofterms(name, "Michael Amit")) {
name
friend {
name@ru:ko:en
friend { expand(_all_) { expand(_all_) } }
}
}
}

  • 数据类型查询
 schema(pred: [name, age, friend, owns_pet]) {
type
index
}

  • 语言支持
<name>@<lan>
参考:
{
language_support(func: allofterms(name@hi, "अमित")) {
name@bn:hi:en
age
friend {
name@ko:ru
age
}
}
}

  • 函数&&过滤
内容查询
- allOfTerms(edge_name, "term1 ... termN")
- anyOfTerms(edge_name, "term1 ... termN")
比较查询
- eq(edge_name, value):
- ge(edge_name, value):
- le(edge_name, value):
- gt(edge_name, value):
- lt(edge_name, value):
  • AND OR NOT 查询
参考:
{
michael_friends_and(func: allofterms(name, "Michael")) {
name
age
friend @filter(ge(age, 27) AND le(age, 48)) {
name@.
age
}
}
}
  • 排序
orderasc or orderdesc
{
michael_friends_sorted(func: allofterms(name, "Michael")) {
name
age
friend (orderasc: age) {
name@.
age
}
}
}

  • 分页
first: N
offset: N
after: uid
参考:
{
michael_friends_first(func: allofterms(name, "Michael")) {
name
age
friend (orderasc: name@., offset: 1, first: 2) {
name@.
}
}
}

  • count
{
michael_number_friends(func: allofterms(name, "Michael")) {
name
age
count(friend)
}
}

  • has
{
have_friends(func: has(friend)) {
name@.
age
number_of_friends : count(friend)
}
}

  • 别名(和graphql 一致)
{
michael_number_friends(func: allofterms(name, "Michael")) {
persons_name : name
age
number_of_friends : count(friend)
}
}

参考资料

https://tour.dgraph.io/

 
 
 
 

dgraph 基本查询语法 一的更多相关文章

  1. dgraph 基本查询语法 三

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

  2. dgraph 基本查询语法 二

    这部分主要是mutation 操作,(就是增加.删除操作) 参考git 项目 https://github.com/rongfengliang/dgraph-docker-compose-deploy ...

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

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

  4. .NET LINQ查询语法与方法语法

    LINQ 查询语法与方法语法      通过使用 C# 3.0 中引入的声明性查询语法,介绍性 LINQ 文档中的多数查询都被编写为查询表达式. 但是,.NET 公共语言运行时 (CLR) 本身并不具 ...

  5. Entity Framework 基于方法的查询语法

      实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发 ...

  6. Lucene查询语法详解

    Lucene查询 Lucene查询语法以可读的方式书写,然后使用JavaCC进行词法转换,转换成机器可识别的查询. 下面着重介绍下Lucene支持的查询: Terms词语查询 词语搜索,支持 单词 和 ...

  7. LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法

    介绍    ·Select - Select选择:延迟    ·Where - Where查询:延迟    ·OrderBy - 按指定表达式对集合正序排序:延迟    ·OrderByDescend ...

  8. google hack 之 查询语法

    google hack 之 查询语法 文/玄魂   前言 谷歌网页搜索技术,大部分在百度等搜索引擎中也适用.同样,这些搜索技术是来源于传统数据库检索技术,因而,对这部分的学习,能为后续章节的数据库检索 ...

  9. Apache Solr查询语法(转)

    查询参数 常用: q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多个. start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用. rows - 指 ...

随机推荐

  1. 解决导入Gradle项目遇到的问题

    Gradle安装好了,插件也在eclipse中配置好了,却不会导入,尴尬.这里我就给大家介绍几个在配置 导入项目所遇到的问题: 分别选择Browse选中本地目录,和BuildModel创建相关的项目文 ...

  2. 2-18,19 搭建MySQL主从服务器并并通过mysql-proxy实现读写分离

    MySQL主从服务器 实现方式: MySQL  REPLICATION Replication可以实现将数据从一台数据库服务器(master)复制到一台或多台数据库服务器(slave) 默认情况下这种 ...

  3. hdu-1404-博弈+打表

    Digital Deletions Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  4. How do you add?(递推)

    题意:求将n分为k个数相加的种数. 如:n=20,k=2,则可分为: 0+20=20 1+19=20 2+18=20 ....... 20 +0=20 共21种方案. 解析:令f(n,m)表示将n分为 ...

  5. HDOJ1008

    #include "iostream" using namespace std; int main() { ) { int n; cin >> n; ) break; ...

  6. Pandas DataFrame 数据选取和过滤

    This would allow chaining operations like: pd.read_csv('imdb.txt') .sort(columns='year') .filter(lam ...

  7. 转载:移动端+微信小程序实现,手机端滑动分页代码思路(ajax)

    //一般在PC上我们要分页都是通过上一页和下一页来实现的,手机通过当下滑到一定程度的时候自动加载下一页面//实现思路:首先加载部分数据,当下滑到某个元素可见的时候,如果还有数据,则新发送请求,然后追加 ...

  8. 信号处理函数的返回sigsetjmp/siglongjmp

    由于在信号处理期间自动屏蔽了正在被处理的信号,而使用setjmp/longjmp跳出信号处理程序时又不会自动将 信号屏蔽码修改会原来的屏蔽码,从而引起该信号被永久屏蔽. 可以使用sigsetjmp/s ...

  9. 如何解决请求URL长度超过配置的maxurlLength值问题

    当我们批量请求的数据太多时,会出现请求的url长度超过配置maxurllength值的问题(比如一次性操作1000条数据) 1.问题描述: 我在进行批量选择单据进行发送时,出现这个问题(批量500条) ...

  10. C#winform窗体如何通过windowApi的FindWindow函数获取窗体句柄

    在同一个程序里,传统方式是通过this来设置当前窗体的最大化.最小化等操作, 那么怎样通过窗体句柄来设置窗体的最大化.最小化呢? 1.界面布局 通过this设置窗体最大化: name:btnWindo ...