.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的监控信息,多余字段已经不会被查询出来了。

91

{
    "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

posted @ 2023-02-11 17:01  初久的私房菜  阅读(104)  评论(0编辑  收藏  举报
作者:初久的私房菜
好好学习,天天向上
返回顶部小火箭
好友榜:
如果愿意,把你的博客地址放这里
张弛:https://blog.zhangchi.fun/