1
+ // :replace-start: {
2
+ // "terms": {
3
+ // "_order": "order",
4
+ // "_aggDb": "aggDb"
5
+ // }
6
+ // }
1
7
namespace Examples . Aggregation ;
2
8
3
9
using MongoDB . Driver ;
@@ -7,16 +13,19 @@ public class GroupTotal
7
13
{
8
14
private IMongoDatabase _aggDB ;
9
15
private IMongoCollection < Order > _orders ;
10
- private string _appDir ;
11
- private string _envRelPath ;
12
16
13
17
public void SeedData ( )
14
18
{
15
19
DotNetEnv . Env . TraversePath ( ) . Load ( ) ;
16
20
string uri = DotNetEnv . Env . GetString ( "CONNECTION_STRING" , "Env variable not found. Verify you have a .env file with a valid connection string." ) ;
17
- //var uri = "mongodb://localhost:27017";
21
+ // :snippet-start: connection-string
22
+ // :uncomment-start:
23
+ //var uri = "mongodb+srv://mongodb-example:27017";
24
+ // :uncomment-end:
25
+ // :snippet-end:
18
26
var client = new MongoClient ( uri ) ;
19
27
_aggDB = client . GetDatabase ( "agg_tutorials_db" ) ;
28
+ // :snippet-start: add-sample-data
20
29
_orders = _aggDB . GetCollection < Order > ( "orders" ) ;
21
30
_orders . DeleteMany ( Builders < Order > . Filter . Empty ) ;
22
31
@@ -77,6 +86,7 @@ public void SeedData()
77
86
Value = 102
78
87
}
79
88
} ) ;
89
+ // :snippet-end:
80
90
}
81
91
82
92
public List < BsonDocument > PerformAggregation ( )
@@ -88,9 +98,14 @@ public List<BsonDocument> PerformAggregation()
88
98
_aggDB = client . GetDatabase ( "agg_tutorials_db" ) ;
89
99
_orders = _aggDB . GetCollection < Order > ( "orders" ) ;
90
100
101
+ // :snippet-start: match
91
102
var results = _orders . Aggregate ( )
92
103
. Match ( o => o . OrderDate >= DateTime . Parse ( "2020-01-01T00:00:00Z" ) && o . OrderDate < DateTime . Parse ( "2021-01-01T00:00:00Z" ) )
104
+ // :snippet-end:
105
+ // :snippet-start: sort-order-date
93
106
. SortBy ( o => o . OrderDate )
107
+ // :snippet-end:
108
+ // :snippet-start: group
94
109
. Group (
95
110
o => o . CustomerId ,
96
111
g => new
@@ -102,8 +117,11 @@ public List<BsonDocument> PerformAggregation()
102
117
Orders = g . Select ( i => new { i . OrderDate , i . Value } ) . ToList ( )
103
118
}
104
119
)
120
+ // :snippet-end:
121
+ // :snippet-start: sort-first-order
105
122
. SortBy ( c => c . FirstPurchaseDate )
106
123
. As < BsonDocument > ( ) ;
124
+ // :snippet-end:
107
125
108
126
foreach ( var result in results . ToList ( ) )
109
127
{
@@ -112,4 +130,5 @@ public List<BsonDocument> PerformAggregation()
112
130
113
131
return results . ToList ( ) ;
114
132
}
115
- }
133
+ }
134
+ // :replace-end:
0 commit comments