I wish to use the C# Driver (V 2.7.0) to aggregate on a collection and then count the results.
Assuming I have an IMongoCollection col, I do the aggregate like this:
IAsyncCursor<BsonDocument> cursor = col.Aggregate()
.Match(someFilterDefinition)
.Project(someProjectionDefinition)
.Unwind("someFieldName")
.ToCursor();
while (cursor.MoveNext())
{
foreach (BsonDocument doc in cursor.Current)
{
doStuff(doc);
}
}
I wish to get the number of documents returned by the aggregation. in the shell you would do something like this
db.getCollection("someCollectionName").aggregate(
[
{
"$match" : {
// some match filter
}
},
{
"$project" : {
"someField" : 1
}
},
{
"$unwind" : "$someField"
},
{
"$count" : "count"
}
],
{
"allowDiskUse" : false
}
);
and you would get a document (or no document) with a single "count" field, having an int64 value of the number of elements from the stage before it.
There is an IAggregateFluent.Count() Function. However it returns an IAggregateFluent I want an AggregateCountResult or just a simple unsigned long.
How does one use the Aggregate.Count() function?