I found one way to simplify this which helps break up the number of rows required.
Following this StackOverflow question 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<BsonDocument>(matchJSON);
var groupBson = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(groupJSON);
and then ran my aggregate query just like it was previously:
var aggregate = collection.Aggregate()
.Match(matchBson)
.Unwind(i => i["VehicleEntry"])
.Group(groupBson);
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<BsonDocument>(matchJSON);
var groupBson = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(groupJSON);
and then ran my aggregate query just like it was previously:
var aggregate = collection.Aggregate()
.Match(matchBson)
.Unwind(i => i["VehicleEntry"])
.Group(groupBson);
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<BsonDocument>(matchJSON);
var groupBson = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(groupJSON);
and then ran my aggregate query just like it was previously:
var aggregate = collection.Aggregate()
.Match(matchBson)
.Unwind(i => i["VehicleEntry"])
.Group(groupBson);
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<BsonDocument>(matchJSON);
var groupBson = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(groupJSON);
and then ran my aggregate query just like it was previously:
var aggregate = collection.Aggregate()
.Match(matchBson)
.Unwind(i => i["VehicleEntry"])
.Group(groupBson);