通过MongoDB C#驱动程序的多个过滤器 [英] Multiple filters via MongoDB C# driver

查看:119
本文介绍了通过MongoDB C#驱动程序的多个过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

运行时如何使用官方驱动程序生成过滤器?我想获取包含特定用户ID并可以针对某些属性(包含一些文本)进行过滤的联系人

How runtime generate filters with official drivers? I want get contacts that contains specific user id and can be filtered for some properties (contains some text)

当前代码不适用于request.Filter > 1:

private FilterDefinition<Contact> BuildFilter(NgTableRequest request, string userId)
{
    var filters = new List<FilterDefinition<Contact>>
    {
        Builders<Contact>.Filter.Where(q => q.ContactUsers.Any(w => w.UserId == userId))
    };

    if (request.Filter != null && request.Filter.Any())
    {
        foreach (var reqFilter in request.Filter)
        {
            filters.Add(Builders<Contact>.Filter.Regex(reqFilter.Key, reqFilter.Value[0]));
        }
    }

    var result = Builders<Contact>.Filter.And(filters);

    return result;
}

推荐答案

使用以下代码检查生成的过滤器,并在另一个地方发现错误

Check generated filter using following code and found error in another place

    var documentSerializer = BsonSerializer.SerializerRegistry.GetSerializer<Contact>();
    var renderedFilter = result.Render(documentSerializer, BsonSerializer.SerializerRegistry).ToString();
    Trace.WriteLine("Filter: " + renderedFilter);

这篇关于通过MongoDB C#驱动程序的多个过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆