作为入门教程,本章是最后一章教程,Dgraph 还有很多东西可以介绍,如果有时间,后面在出Dgraph的进阶教程。对数据库最重要的操作就是增删改查。本章将详细介绍。
1、查询
Dgraph 在你创建GraphQL的时候会自动创建查询。查询用的是Queries。
比如创建
type Post {
id: ID!
title: String! @search
text: String
score: Float @search
completed: Boolean @search
datePublished: DateTime @search(by: [year])
author: Author!
}
type Author {
id: ID!
name: String! @search
posts: [Post!]
friends: [Author]
}
下面的查询会自动创建
getPost(postID: ID!): Post
queryPost(filter: PostFilter, order: PostOrder, first: Int, offset: Int): [Post]
aggregatePost(filter: PostFilter): PostAggregateResult
第一个查询根据ID获取数据,第二个查询允许你根据一些过滤条件,排序查询数据,第三个查询允许你获得一些聚合参数。
执行下面的语句让你获取Post和关联对象
query {
getPost(id: "0x1") {
id
title
text
datePublished
author {
name
friends {
name
}
}
}
}
你也可以通过Author去查询Post 甚至可以对Post在添加查询过滤条件
query {
getAuthor(id: "0x1") {
name
posts(filter: {
title: {
allofterms: "GraphQL"
}
}) {
title
text
datePublished
}
}
}
注意,这些查询支持哪些查询还去觉得定义Shema的时候给的条件,比如tile 后面的指令 @search。
Dgraph 支持一些聚合查询,比如获取Post的数量
query {
aggregatePost {
count
}
}
聚合查询时,也可以加入一些判断条件
query {
aggregatePost(filter: {
title: {
anyofterms: "GraphQL"
}
}) {
count
}
}
也可以对子节点做高级聚合查询。比如
query {
queryAuthor {
name
posts