Skip to content

Commit

Permalink
DOCSP-43911 - Implicit Client-Side Projection in LINQ3 (#242)
Browse files Browse the repository at this point in the history
  • Loading branch information
mongoKart authored Oct 3, 2024
1 parent fcd7fc1 commit 45a6d4a
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions source/whats-new.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,77 @@ The 3.0 driver release includes the following new features:
`TimeOnly Struct. <https://learn.microsoft.com/en-us/dotnet/api/system.timeonly?view=net-6.0>`__
API reference page on MSDN.

- Adds support for implicit client-side projection when using the ``Find()`` method,
the ``Select()`` method, or the ``Project()`` aggregation stage with the LINQ3 provider.
In previous versions of the driver, you could perform client-side
projection with the LINQ3 provider only after calling the ``ToEnumerable()`` or
``AsEnumerable()`` method.

To learn how to enable and use client-side projection for a driver method, select the
corresponding tab:

.. tabs::

.. tab:: Find() Method
:tabid: find-method

.. code-block:: csharp

// Enable client-side projection
var findOptions = new FindOptions();
findOptions.TranslationOptions = new ExpressionTranslationOptions
{
EnableClientSideProjections = true
};

var find = collection
.Find(doc => doc.Id == 1, findOptions);
.Project(doc => new { R = MyFunction(doc.Name) });

.. tab:: Select() Method
:tabid: select-method

.. code-block:: csharp

// Enable client-side projection
var aggregateOptions = new AggregateOptions();
aggregateOptions.TranslationOptions = new ExpressionTranslationOptions
{
EnableClientSideProjections = true
};

var queryable = collection
.AsQueryable(aggregateOptions)
.Where(doc => doc.Id == 1)
.Select(doc => new { R = MyFunction(doc.Name) });

.. tab:: Project() Method
:tabid: project-method

.. code-block:: csharp

// Enable client-side projection
var aggregateOptions = new AggregateOptions();
aggregateOptions.TranslationOptions = new ExpressionTranslationOptions
{
EnableClientSideProjections = true
};

var aggregate = collection
.Aggregate(aggregateOptions)
.Project(doc => new { R = MyFunction(doc.Name) });

.. tip:: MongoClientSettings

To enable client-side projection for all queries on a client, set the
``TranslationOptions`` property of the ``MongoClientSettings`` object to ``true``.

To learn more about using the aggregation pipeline with the {+driver-short+}, see
:ref:`csharp-aggregation`.

For more information about this release, see the :github:`v3.0 release notes
</mongodb/mongo-csharp-driver/releases/tag/v3.0.0>`.

.. _csharp-version-2.28:

What's New in 2.28
Expand Down

0 comments on commit 45a6d4a

Please sign in to comment.