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);