【问题标题】:Multiple filters via MongoDB C# driver通过 MongoDB C# 驱动程序的多个过滤器
【发布时间】:2015-06-09 07:37:55
【问题描述】:

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

当前代码不适用于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;
}

【问题讨论】:

    标签: c# mongodb mongodb-.net-driver


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-16
      • 2022-01-03
      • 2019-05-13
      • 2021-09-01
      • 1970-01-01
      • 2017-04-13
      • 2017-08-27
      • 2021-11-03
      • 2011-10-23
      相关资源
      最近更新 更多