【问题标题】:MongoDB C# - How to apply filter to all fields [duplicate]MongoDB C# - 如何将过滤器应用于所有字段[重复]
【发布时间】:2017-12-14 21:09:17
【问题描述】:

如何在所有字段上应用这个正则表达式过滤器:

var collection = _DB.GetCollection<BsonDocument>(table);

FilterDefinition<BsonDocument> filter = Builders<BsonDocument>.Filter.Regex(__ANY FIELD__, BsonRegularExpression.Create(new Regex(".*" + searchString + ".*", RegexOptions.IgnoreCase)));

var documents = await collection.Find(filter).ToListAsync();

【问题讨论】:

    标签: c# mongodb


    【解决方案1】:

    显然,即使使用本机 MongoDB 语法 (refer here) 直接在控制台中也无法做到这一点

    所以我最终提到了所有字段并对过滤器进行 OR 运算:

    var collection = _DB.GetCollection<BsonDocument>(table);
    
    FilterDefinition<BsonDocument> filter;
    
    foreach (Field field in allFields)
    {
        if (filter == null)
            filter = Builders<BsonDocument>.Filter.Regex(field.Name, BsonRegularExpression.Create(new Regex(".*" + searchString + ".*", RegexOptions.IgnoreCase)));
        else
            filter = filter | Builders<BsonDocument>.Filter.Regex(col.Name, BsonRegularExpression.Create(new Regex(".*" + searchString + ".*", RegexOptions.IgnoreCase)));
    }
    
    var documents = await collection.Find(filter).ToListAsync();
    

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 2022-01-09
      • 2020-12-06
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      相关资源
      最近更新 更多