使用正则表达式 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# 驱动程序进行过滤的主要内容,如果未能解决你的问题,请参考以下文章