Nesting BsonDocuments in MongoDB queries
I found one way to simplify this which helps break up the number of rows required.

Following this StackOverflow question about converting a JSON string to Bson, I wrote part of my query as it would be in a console. I could only figure out how to do this for the match and group part:

var matchJSON = "{ project_id : '1234' }";
var groupJSON = "{ " + 
    "_id : { project_id : '$project_id', date : '$VehicleEntry.@Date' }, " + 
    "passed : { $sum : { $cond : [ { $eq : [ '$VehicleEntry.VehicleStatus', 'PASSED' ] }, 1, 0 ] } }, " + 
    "failed : { $sum : { $cond : [ { $eq : [ '$VehicleEntry.VehicleStatus', 'FAILED' ] }, 1, 0 ] } } }";


Then I converted it to BsonDocuments:

var matchBson = MongoDB.Bson.Serialization.BsonSerializer.Deserialize&lt;BsonDocument&gt;(matchJSON);
var groupBson = MongoDB.Bson.Serialization.BsonSerializer.Deserialize&lt;BsonDocument&gt;(groupJSON);


and then ran my aggregate query just like it was previously:

var aggregate = collection.Aggregate()
    .Match(matchBson)
    .Unwind(i =&gt; i["VehicleEntry"])
    .Group(groupBson);