MongoDB C# 2.14 驱动程序 Filter.In
MongoDB C# 2.14 Driver Filter.In
我正在尝试使用 Filter.In
API.
获取文档数组字段具有匹配值的所有文档
Filter.In
方法需要 FieldDefinition 和值数组,但如果我使用 lambda,那将不起作用。
它是这样缩进的还是我遇到了某种错误?
我正在尝试一种强类型方法。
genres = new[] {"one", "two", "three"};
//This filter works
var filter = Builders<Movie>.Filter
.ElemMatch(movie => movie.Genres, genre => genres.Contains(genre));
//This filter works
var filter2 = Builders<Movie>.Filter.In(nameof(Movie.Genres), genres);
//This filter works
var filter3 = Builders<Movie>.Filter.In("genres", genres);
//Doesn't compile
var filter4 = Builders<Movie>.Filter.In(movie => movie.Genres, genres);
In
过滤器检查指定字段的值是否包含在提供的数组中。如果您有一个与电影关联的 Genre
,则可以使用此过滤器。您会收到该编译时错误,因为过滤器构建器期望此字段的类型为 string
而不是 string[]
.
要检查您的数组字段是否包含所提供数组中的值,试试这个:
var filter = Builders<Movie>.Filter.AnyIn(movie => movie.Genres, genres);
我正在尝试使用 Filter.In
API.
Filter.In
方法需要 FieldDefinition 和值数组,但如果我使用 lambda,那将不起作用。
它是这样缩进的还是我遇到了某种错误?
我正在尝试一种强类型方法。
genres = new[] {"one", "two", "three"};
//This filter works
var filter = Builders<Movie>.Filter
.ElemMatch(movie => movie.Genres, genre => genres.Contains(genre));
//This filter works
var filter2 = Builders<Movie>.Filter.In(nameof(Movie.Genres), genres);
//This filter works
var filter3 = Builders<Movie>.Filter.In("genres", genres);
//Doesn't compile
var filter4 = Builders<Movie>.Filter.In(movie => movie.Genres, genres);
In
过滤器检查指定字段的值是否包含在提供的数组中。如果您有一个与电影关联的 Genre
,则可以使用此过滤器。您会收到该编译时错误,因为过滤器构建器期望此字段的类型为 string
而不是 string[]
.
要检查您的数组字段是否包含所提供数组中的值,试试这个:
var filter = Builders<Movie>.Filter.AnyIn(movie => movie.Genres, genres);