.Net6 + GraphQL + MongoDb 实现Query按需检索Projections
介绍
上一节我们实现一个简单Query查询,从监控信息上面来看我们调用数据使用的是全表检索。这一节我看来看下如何实现按需检索
正文
修改Program
builder.Services
.AddGraphQLServer()
.AddQueryType<PostQuery>()
.AddMongoDbProjections();
修改PostQuery.cs
public class PostQuery
{
[UseProjection]
public IExecutable<Post> GetPosts([Service] DbContext db)
{
return db.Post.AsExecutable();
}
}
这时候我们去https://localhost:7145/graphql/
调用的时候并不能发现有什么变化,我们看下MongoDb的监控信息,多余字段已经不会被查询出来了。
{
"op": "query",
"ns": "GQL_Example.post",
"command": {
"find": "post",
"filter": { },
"projection": {
"Comments.Name": NumberInt("1"),
"Title": NumberInt("1"),
"_id": NumberInt("1")
},
"$db": "GQL_Example",
"lsid": {
"id": UUID("0fff9f49-cb69-44d7-8dc0-9010e91349fe")
},
"$clusterTime": {
"clusterTime": Timestamp(1676091221, 1),
"signature": {
"hash": BinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId": NumberLong("0")
}
}
}
}
结语
本系列主要将GraphQL的使用,示例项目不能应用于生产,后续发一些GraphQL库出来讲解生产中的实际应用
联系作者:加群:867095512 @MrChuJiu