Skip to content

Commit 0bde7d8

Browse files
committed
VS-72: Update samples to include latest features for 1.1.0
1 parent 3301d75 commit 0bde7d8

File tree

3 files changed

+59
-3
lines changed

3 files changed

+59
-3
lines changed

samples/BasicSample/BuildersSample.cs

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,51 @@ public async Task<List<Movie>> GetMovies(double minScore, Genre genre, string ti
3636
.Ascending(m => m.Score)
3737
.Descending(m => m.Title);
3838

39-
var movies = await moviesCollection.Find(filter).Sort(sort).ToListAsync();
39+
var projection = Builders<Movie>.Projection
40+
.Include(m => m.Title)
41+
.Exclude(m => m.Genre);
42+
43+
// MQL is displayed for 'filter' and 'sort' variables
44+
var movies = await moviesCollection
45+
.Find(filter)
46+
.Sort(sort)
47+
.Project(projection)
48+
.As<Movie>()
49+
.ToListAsync();
50+
51+
// Fluent API
52+
_ = moviesCollection
53+
.Find(u => u.Producer.Contains("Nolan"))
54+
.SortBy(u => u.Score)
55+
.ThenBy(u => u.Title);
4056

4157
return movies;
4258
}
4359

60+
public void VariablesTracking()
61+
{
62+
var mongoClient = new MongoClient(@"mongodb://localhost:27017");
63+
var db = mongoClient.GetDatabase("testdb");
64+
var moviesCollection = db.GetCollection<Movie>("movies");
65+
66+
var filterScore = Builders<Movie>.Filter.Gt(p => p.Score, 5);
67+
var filterTitle = Builders<Movie>.Filter.Regex(p => p.Title, "Summer");
68+
var filterGenre = Builders<Movie>.Filter.Eq(p => p.Genre, Genre.Comedy);
69+
70+
// Each filter variable tracks its MQL
71+
var filterCombined = filterTitle | filterScore | filterGenre;
72+
73+
// MQL for the combined filter
74+
moviesCollection.Find(filterCombined);
75+
}
76+
4477
public void NotSupportedFilter()
4578
{
4679
// Not supported filter expression (analyzer provides warning)
4780
var filter = Builders<Movie>.Filter.Gt(m => m.Reviews.Length, 2);
81+
82+
// Not supported filter expression (analyzer provides warning)
83+
filter = Builders<Movie>.Filter.AnyNin(t => t.Reviews, null);
4884
}
4985
}
5086
}

samples/BasicSample/LinqSample.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ public async Task<List<IGrouping<Genre, Movie>>> GetMoviesGroupedByGenre()
5151
.GroupBy(m => m.Genre)
5252
.ToListAsync();
5353

54+
// Query API
55+
var queryable = from movie in moviesCollection
56+
group movie by movie.Genre into g
57+
select g;
58+
groups = await queryable.ToListAsync();
59+
5460
return groups;
5561
}
5662

@@ -69,7 +75,7 @@ public async Task<dynamic> GetGenreStatistics()
6975
return groups;
7076
}
7177

72-
public async Task<IGrouping<Genre, Movie>> GetActionMoviesReviewsByProducer(string producerName)
78+
public async Task<List<string>> GetActionMoviesReviewsByProducer(string producerName)
7379
{
7480
var mongoClient = new MongoClient(@"mongodb://localhost:27017");
7581
var db = mongoClient.GetDatabase("testdb");
@@ -79,10 +85,21 @@ public async Task<IGrouping<Genre, Movie>> GetActionMoviesReviewsByProducer(stri
7985
var reviews = await moviesCollection
8086
.Where(m => m.Producer == producerName)
8187
.Where(m => m.Genre == Genre.Action)
88+
.OrderBy(m => m.Score)
8289
.SelectMany(m => m.Reviews)
8390
.ToListAsync();
8491

85-
return null;
92+
// Query API
93+
var queryable = from movie in moviesCollection
94+
where movie.Producer == producerName
95+
where movie.Genre == Genre.Action
96+
orderby movie.Score
97+
from review in movie.Reviews
98+
select review;
99+
100+
reviews = await queryable.ToListAsync();
101+
102+
return reviews;
86103
}
87104

88105
public void NotSupportedQuery(double minScore, Genre genre)

samples/BasicSample/mongodb.analyzer.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
// Default LINQ provider, for drivers supporting LINQ3 (2.14 and higher)
33
"DefaultLinqVersion": "V2",
44

5+
// Enables builders variables tracking and composition, enabled by default
6+
"EnableVariableTracking": true,
7+
58
// Appends the driver version to MQL expression
69
"OutputDriverVersion": false,
710

0 commit comments

Comments
 (0)