Mongodb .Net драйвер Найти нечувствительный к регистру - PullRequest
0 голосов
/ 09 мая 2018

Учитывая следующее JSON, я пытаюсь получить все документы, которые соответствуют "myemail@domain.com". Мне нужен регистронезависимый фильтр. Я думал, что если я добавлю i к значению, он будет выполнять поиск, но не повезло.

Я очень плохо знаком с MongoDB, так что извините, если это простая проблема.

{ 
"_id" : ObjectId("5aecc56d2a7e7a408c9767e3"),     
"Children" : [
    {
        "Email" : "MyEmail@Domain.com", 
        "Children" : [
            {
                "Name" : "Some name", 
                "Value" : "some value",                     
            }
        ]
    }
]
}

var email = "myemail@domain.com";
var filter = Builders<Subscription>.Filter.Eq("Children.Email", $"/{email}/i");
return await context.Subscriptions.Find(filter).ToListAsync();

1 Ответ

0 голосов
/ 09 мая 2018

Существует специальный класс BsonRegularExpression, который можно использовать в качестве параметра метода Regex. Простой Eq попытается выполнить регулярное сравнение на равенство здесь. Попробуйте это:

var email = "myemail@domain.com";
var filter = Builders<Subscription>.Filter.Regex("Children.Email", new BsonRegularExpression(email, "i"));
return await context.Subscriptions.Find(filter).ToListAsync();
...