使用正则表达式 MongoDB C# 驱动程序进行过滤

Posted

技术标签:

【中文标题】使用正则表达式 MongoDB C# 驱动程序进行过滤【英文标题】:Filter with regex MongoDB C# driver 【发布时间】:2016-03-15 01:51:44 【问题描述】:

我正在尝试将originalEmail 的字段与 liron@gmail.com 之类的邮件地址匹配,但无论如何,区分大小写意味着也可以找到 LirOn@gmail.com 字段。

public ObjectId? GetEntityIdByOriginalEmail(string originalEmail)

    FilterDefinition<Entity> filter = " x :  $regex : /" + originalEmail + "//i  ";
    var entity = _entitiesStorage.GetSingleOrDefault(filter);

    if (entity == null)
        return null;

    return entity._id;

这对我不起作用。为什么?

【问题讨论】:

【参考方案1】:

您可以使用Builders.Filter.Regex

public async Task<Entity> GetEntityIdByOriginalEmail(string originalEmail)

    var collection = GetCollection();
    var filter = Builders<Entity>.Filter.Regex("x", new BsonRegularExpression(originalEmail, "i"));
    return await collection.Find(filter).FirstOrDefaultAsync();

【讨论】:

但是我要求的忽略大小写敏感呢 对不起。我更新了。 BsonRegularExpression 有第二个参数 - 选项。 如何过滤所有字段,而不仅仅是“x”? 但它并不完全匹配。它确实开始了。例如,如果电子邮件是 liron@gmail.com 并且您将 liron@gmail.co 作为 originalEmail 传递,那么它也匹配。 要使其完全匹配,您必须像这样写“^”+ originalEmail +“$”。

以上是关于使用正则表达式 MongoDB C# 驱动程序进行过滤的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 正则表达式

带有索引字段的 MongoDB 正则表达式

为啥 C# 正则表达式信用卡验证函数会使用无效值进行验证? [复制]

使用正则表达式在 MongoDB 中搜索任何值?

Java对mongodb进行正则查询?

C# 中的正则表达式无法正常工作以进行数字检查 [重复]