如何用MongoDb驱动程序在C#中对同一属性的多个值建立过滤器



我正试图在MongoDB表中的某个属性上创建一个过滤器。我有一个值数组,我只想从MongoDB中检索包含我正在搜索的属性的值的结果

例如:

我想搜索以下所有Id:"12345"、"23456"、"34567"我有一个这些值的数组:

var ids = ["12345", "23456", "34567"]

我目前构建的过滤器如下:

var builder = Builders<Common.Models.ServiceRequest>.Filter;
FilterDefinition<Common.Models.ServiceRequest> filter = builder.Empty;
filter = builder.Ne(x => x.Id, null);
foreach (string id in ids)
{
filter = filter | builder.Eq(x => x.Id, id);
}

由于某种原因,这似乎不起作用,尽管我在MongoDriver中使用了or(|(。

如有任何指导,我们将不胜感激!感谢

您应该使用In运算符与值的集合或数组进行比较。

var ids = ["12345", "23456", "34567"];
var builder = Builders<Common.Models.ServiceRequest>.Filter;
FilterDefinition<Common.Models.ServiceRequest> filter = builder.Empty;
filter = builder.Ne(x => x.Id, null);
builder.In(x => x.Id, ids);

In筛选器采用IEnumerable,因此您可以直接将其用于列表、数组或任何其他枚举对象。

最新更新