C# MongoDB C聚合计数

C# MongoDB C聚合计数,c#,mongodb,C#,Mongodb,我希望使用C驱动程序v2.7.0对集合进行聚合,然后计算结果 假设我有一个iMongocol集合,我会这样做: IAsyncCursor<BsonDocument> cursor = col.Aggregate() .Match(someFilterDefinition) .Project(someProjectionDefinition) .Unwind("someFieldName") .ToCursor(); while (cursor.Move

我希望使用C驱动程序v2.7.0对集合进行聚合,然后计算结果

假设我有一个iMongocol集合,我会这样做:

IAsyncCursor<BsonDocument> cursor = col.Aggregate()
    .Match(someFilterDefinition)
    .Project(someProjectionDefinition)
    .Unwind("someFieldName")
    .ToCursor();
while (cursor.MoveNext())
{
    foreach (BsonDocument doc in cursor.Current)
    {
        doStuff(doc);
    }
}
您将获得一个带有单个计数字段的文档或无文档,该字段的int64值为前一阶段的元素数

有一个函数。但是,它返回一个IAggregateFluent 我想要一个AggregateCountResult,或者只是一个简单的无符号long


如何使用Aggregate.Count函数?

不只是添加Count,这会让您进入一个聚合阶段,您必须使用.ToCursor或.FirstOrDefault或类似工具完成聚合。 FirstOrDefault返回AggregateCountResult,它具有Count属性

ulong count = col.Aggregate()
    .Match(someFilterDefinition)
    .Project(someProjectionDefinition)
    .Unwind("someFieldName")
    .Count()
    .FirstOrDefault() // returns AggregateCountResult
    .Count();         // returns ulong

不只是追加Count,这将为您提供一个聚合阶段,您必须使用.ToCursor或.FirstOrDefault或类似工具完成聚合。 FirstOrDefault返回AggregateCountResult,它具有Count属性

ulong count = col.Aggregate()
    .Match(someFilterDefinition)
    .Project(someProjectionDefinition)
    .Unwind("someFieldName")
    .Count()
    .FirstOrDefault() // returns AggregateCountResult
    .Count();         // returns ulong

应该是.FirstOrDefault.Count;没有括号。在当前版本2.9.1中,它还返回一个long而不是ulong。请注意:当没有要计数的条目时,count将不返回任何元素。因此.FirstOrDefault为null,.Count将引发NullReferenceException。它应该是.FirstOrDefault.Count;没有括号。在当前版本2.9.1中,它还返回一个long而不是ulong。请注意:当没有要计数的条目时,count将不返回任何元素。因此.FirstOrDefault为null,.Count将引发NullReferenceException。