@@ -130,6 +130,15 @@ public static SortDefinition<TDocument> MetaTextScore<TDocument>(this SortDefini
130
130
/// <typeparam name="TDocument">The type of the document.</typeparam>
131
131
public sealed class SortDefinitionBuilder < TDocument >
132
132
{
133
+ /// <summary>
134
+ /// Creates a value ascending sort.
135
+ /// </summary>
136
+ /// <returns>An ascending sort.</returns>
137
+ public SortDefinition < TDocument > Ascending ( )
138
+ {
139
+ return new NoFieldDirectionalSortDefinition < TDocument > ( SortDirection . Ascending ) ;
140
+ }
141
+
133
142
/// <summary>
134
143
/// Creates an ascending sort.
135
144
/// </summary>
@@ -170,6 +179,15 @@ public SortDefinition<TDocument> Combine(IEnumerable<SortDefinition<TDocument>>
170
179
return new CombinedSortDefinition < TDocument > ( sorts ) ;
171
180
}
172
181
182
+ /// <summary>
183
+ /// Creates a value descending sort.
184
+ /// </summary>
185
+ /// <returns>A descending sort.</returns>
186
+ public SortDefinition < TDocument > Descending ( )
187
+ {
188
+ return new NoFieldDirectionalSortDefinition < TDocument > ( SortDirection . Descending ) ;
189
+ }
190
+
173
191
/// <summary>
174
192
/// Creates a descending sort.
175
193
/// </summary>
@@ -288,4 +306,26 @@ public override BsonDocument Render(RenderArgs<TDocument> args)
288
306
return new BsonDocument ( renderedField . FieldName , value ) ;
289
307
}
290
308
}
309
+
310
+ internal sealed class NoFieldDirectionalSortDefinition < TDocument > : SortDefinition < TDocument >
311
+ {
312
+ private readonly SortDirection _direction ;
313
+
314
+ public NoFieldDirectionalSortDefinition ( SortDirection direction )
315
+ {
316
+ _direction = direction ;
317
+ }
318
+
319
+ public override BsonDocument Render ( RenderArgs < TDocument > args )
320
+ {
321
+ BsonValue value = _direction switch
322
+ {
323
+ SortDirection . Ascending => 1 ,
324
+ SortDirection . Descending => - 1 ,
325
+ _ => throw new InvalidOperationException ( "Unknown value for " + typeof ( SortDirection ) + "." )
326
+ } ;
327
+
328
+ return new BsonDocument ( "direction" , value ) ;
329
+ }
330
+ }
291
331
}
0 commit comments