ChilliCream / hotchocolate-examples

MIT License
187 stars 137 forks source link

Add a sample of Projection with MongoDb Provider #39

Open vinicius-actcon opened 2 years ago

vinicius-actcon commented 2 years ago

Hello everyone!

Thanks for became this amazing solution avaliable for the .NET ecosystem.

I"m reading the documentation of "how use HotChocolate with MongoDb at projection level" but I did found any reference of how to use the projection itself.

For exemple, i see that after IMongoCollection we have access to .AsExecutable() extension method and afterwards this execution whe hav access to With options (WithSorting|WithFiltering|WithOptions|WithProjection) and WithProjection method expect an argument of type MongoDbProjectionDefinition, but how can i instantiate this definition?

There's no one reference in nowhere how to create(instantiate) that definition to be used by projection. Could someone provide a sample of how to do that?

Thanks!

PascalSenn commented 2 years ago

you can just return the executable

[UseProjection]
public IExecutable<Foo> GetFoo(...) => collection.AsExecutable();

Though unless you really have big documents with tons of properties, you may not really see a performance benefit. Projections are really only a benefit in mongodb when you have covered queries or big documents (and you want to reduce network traffic) This is a good read: https://betterprogramming.pub/improve-mongodb-performance-using-projection-c08c38334269

vinicius-actcon commented 2 years ago

yeah, I'm aware about the performance issues with use of projections, but I really need a projection due to not expose all fields for a given entity.

How could create an "projection" of an entity type with a model type?

PascalSenn commented 2 years ago

@vinicius-actcon hmm not sure what you mean.