Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分组方式,首先抛出MongoDb C#驱动程序中的NotSupportedException_C#_Mongodb_Mongodb .net Driver - Fatal编程技术网

分组方式,首先抛出MongoDb C#驱动程序中的NotSupportedException

分组方式,首先抛出MongoDb C#驱动程序中的NotSupportedException,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我试图按名称字段对集合进行分组,并使用聚合管道获取得分最高的文档 public async Task<IEnumerable<Student>> GetTopAsync(int limit, int offset) { var x = await students .Aggregate(new AggregateOptions{AllowDiskUse = true}) .Group(k => k.Class, g =>

我试图按
名称
字段对集合进行分组,并使用聚合管道获取得分最高的文档

public async Task<IEnumerable<Student>> GetTopAsync(int limit, int offset)
{
    var x = await students
        .Aggregate(new AggregateOptions{AllowDiskUse = true})
        .Group(k => k.Class, g => g.OrderByDescending(o => o.Score).First())
        .Skip(offset)
        .Limit(limit)
        .ToListAsync();

    return x;
}
public异步任务GetTopAsync(int-limit,int-offset)
{
var x=等待学生
.Aggregate(新聚合选项{AllowDiskUse=true})
.Group(k=>k.Class,g=>g.OrderByDescending(o=>o.Score).First())
.跳过(偏移)
.限额
.ToListAsync();
返回x;
}
但是,上述方法会引发异常:

2020-11-10 10:57:27.3687|1.0.0.0|d3019991-db73-4a98-b331-ac6f00b49331|GlobalExceptionFilter|System.NotSupportedException: Specified method is not supported.
   at MongoDB.Driver.Linq.Processors.AccumulatorBinder.GetAccumulatorArgument(Expression node)
   at MongoDB.Driver.Linq.Processors.AccumulatorBinder.TryGetAccumulatorTypeAndArgument(PipelineExpression node, AccumulatorType& accumulatorType, Expression& argument)
   at MongoDB.Driver.Linq.Processors.AccumulatorBinder.VisitPipeline(PipelineExpression node)
   at MongoDB.Driver.Linq.Expressions.PipelineExpression.Accept(ExtensionExpressionVisitor visitor)
   at MongoDB.Driver.Linq.Processors.AccumulatorBinder.Bind(Expression node, IBindingContext bindingContext)
   at MongoDB.Driver.Linq.Processors.EmbeddedPipeline.EmbeddedPipelineBinder.Bind(Expression node, IBindingContext parent)
   at MongoDB.Driver.Linq.Processors.SerializationBinder.BindEmbeddedPipeline(MethodCallExpression node)
   at MongoDB.Driver.Linq.Processors.SerializationBinder.VisitMethodCall(MethodCallExpression node)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at MongoDB.Driver.Linq.Processors.SerializationBinder.Visit(Expression node)
   at MongoDB.Driver.Linq.Processors.SerializationBinder.Bind(Expression node, IBindingContext context, Boolean isClientSideProjection)
   at MongoDB.Driver.Linq.Processors.PipelineBindingContext.Bind(Expression node, Boolean isClientSideProjection)
   at MongoDB.Driver.Linq.Processors.PipelineBindingContext.Bind(Expression node)
   at MongoDB.Driver.Linq.Translators.AggregateGroupTranslator.BindGroup[TKey,TDocument,TResult](PipelineBindingContext bindingContext, Expression`1 groupProjector, IBsonSerializer`1 parameterSerializer, Expression keySelector)
   at MongoDB.Driver.Linq.Translators.AggregateGroupTranslator.Translate[TKey,TDocument,TResult](Expression`1 idProjector, Expression`1 groupProjector, IBsonSerializer`1 parameterSerializer, IBsonSerializerRegistry serializerRegistry, ExpressionTranslationOptions translationOptions)
   at MongoDB.Driver.GroupExpressionProjection`3.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
   at MongoDB.Driver.PipelineStageDefinitionBuilder.<>c__DisplayClass19_0`2.<Group>b__0(IBsonSerializer`1 s, IBsonSerializerRegistry sr)
   at MongoDB.Driver.DelegatedPipelineStageDefinition`2.Render(IBsonSerializer`1 inputSerializer, IBsonSerializerRegistry serializerRegistry)
   at MongoDB.Driver.AppendedStagePipelineDefinition`3.Render(IBsonSerializer`1 inputSerializer, IBsonSerializerRegistry serializerRegistry)
   at MongoDB.Driver.AppendedStagePipelineDefinition`3.Render(IBsonSerializer`1 inputSerializer, IBsonSerializerRegistry serializerRegistry)
   at MongoDB.Driver.AppendedStagePipelineDefinition`3.Render(IBsonSerializer`1 inputSerializer, IBsonSerializerRegistry serializerRegistry)
   at MongoDB.Driver.MongoCollectionImpl`1.AggregateAsync[TResult](IClientSessionHandle session, PipelineDefinition`2 pipeline, AggregateOptions options, CancellationToken cancellationToken)
   at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSessionAsync[TResult](Func`2 funcAsync, CancellationToken cancellationToken)
   at MongoDB.Driver.IAsyncCursorSourceExtensions.ToListAsync[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken)
2020-11-10 10:57:27.3687 | 1.0.0.0 | d3019991-db73-4a98-b331-ac6f00b49331 | GlobalExceptionFilter | System.NotSupported异常:不支持指定的方法。
位于MongoDB.Driver.Linq.Processors.AccumeratorBinder.GetAccumeratorArgument(表达式节点)
在MongoDB.Driver.Linq.Processors.AccumeratorBinder.TryGetAccumulatorTypeAndArgument(PipelineExpression节点、AccumeratorType和AccumeratorType、表达式和参数)
位于MongoDB.Driver.Linq.Processors.AccumeratorBinder.VisitPipeline(PipelineExpression节点)
位于MongoDB.Driver.Linq.Expressions.PipelineExpression.Accept(ExtensionExpressionVisitor)
位于MongoDB.Driver.Linq.Processors.AccumeratorBinder.Bind(表达式节点,IBindingContext bindingContext)
位于MongoDB.Driver.Linq.Processors.EmbeddedPipeline.EmbeddedPipelineBinder.Bind(表达式节点,IBindingContext父节点)
位于MongoDB.Driver.Linq.Processors.SerializationBinder.BindEmbeddedPipeline(MethodCallExpression节点)
位于MongoDB.Driver.Linq.Processors.SerializationBinder.VisitMethodCall(MethodCallExpression节点)
位于System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor)
位于MongoDB.Driver.Linq.Processors.SerializationBinder.Visit(表达式节点)
位于MongoDB.Driver.Linq.Processors.SerializationBinder.Bind(表达式节点、IBindingContext上下文、布尔isClientSideProjection)
位于MongoDB.Driver.Linq.Processors.PipelineBindingContext.Bind(表达式节点,布尔isClientSideProjection)
位于MongoDB.Driver.Linq.Processors.PipelineBindingContext.Bind(表达式节点)
在MongoDB.Driver.Linq.Translators.AggregateGroupTranslator.BindGroup[TKey,TDocument,TResult](PipelineBindingContext bindingContext,Expression`1 groupProjector,IBsonSerializer`1 parameterSerializer,Expression keySelector)
在MongoDB.Driver.Linq.Translators.AggregateGroupTranslator.Translate[TKey,TDocument,TResult](表达式'1 idProjector,表达式'1 groupProjector,表达式'1 groupProjector,IBMsonSerializer'1 parameterSerializer,IBMsonSerializerRegistry serializerRegistry,表达式translationOptions translationOptions)
位于MongoDB.Driver.GroupExpressionProjection`3.Render(IBMOSonSerializer`1 documentSerializer,IBMOSonSerializerRegistry serializerRegistry)
在MongoDB.Driver.PipelineStageDefinitionBuilder.c_uu上显示Class19_0`2.b_u0(IBMONSerializer`1 s,IBMONSerializerRegistry sr)
在MongoDB.Driver.DelegatedPipelineStageDefinition`2.Render(IBMOSonSerializer`1 inputSerializer,IBMOSonSerializerRegistry serializerRegistry)
在MongoDB.Driver.AppendedStagePipelineDefinition`3.Render(IBMOSonSerializer`1 inputSerializer,IBMOSonSerializerRegistry serializerRegistry)
在MongoDB.Driver.AppendedStagePipelineDefinition`3.Render(IBMOSonSerializer`1 inputSerializer,IBMOSonSerializerRegistry serializerRegistry)
在MongoDB.Driver.AppendedStagePipelineDefinition`3.Render(IBMOSonSerializer`1 inputSerializer,IBMOSonSerializerRegistry serializerRegistry)
在MongoDB.Driver.MongoCollectionImpl`1.AggregateAsync[TResult](IClientSessionHandle会话,PipelineDefinition`2管道,AggregateOptions选项,CancellationToken CancellationToken)
在MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSessionAsync[TResult](Func`2 funcAsync,CancellationToken CancellationToken)
在MongoDB.Driver.iasyncursorsourceextensions.toListSync[TDocument](iasyncursource`1 source,CancellationToken CancellationToken)

我猜orderby/first方法没有在驱动程序中实现?实现这一目标的最佳方法是什么?

你有没有想过?我也遇到了类似的情况。@JMD我使用了
.Aggregate(PipelineDefinition.Create(match,group,skip,take))
其中
match
group
,等等使用
BsonDocument
定义的。你有没有弄明白这一点?我也遇到了类似的情况。@JMD我使用了
.Aggregate(PipelineDefinition.Create(match,group,skip,take))
其中
匹配
,等等使用
BsonDocument
定义。