我正试图在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,因此您可以直接将其用于列表、数组或任何其他枚举对象。