мне нужно построить следующий запрос с использованием MongoDB C Водитель #Использование MongoDB C# Драйвер ElementMatch записи с Regex запроса
db.Notes.find({ "Group._id" : 74, "CustomFields" : { "$elemMatch" : { "Value" : /batch/i } }, "IsDeleted" : false }).sort({ "CreatedDateTimeUtc" : -1 })
Я использовал запрос как этот
builder.ElemMatch(x => x.CustomFields, x => x.Value.Contains(filterValue))
Он генерируется MONGO запрос как
db.Notes.find({ "Group._id" : 74, "CustomFields" : { "$elemMatch" : { "Value" : /batch/s } }, "IsDeleted" : false }).sort({ "CreatedDateTimeUtc" : -1 })
если вы заметили, что это добавление s по адресу /batch/s
вместо i /batch/i
Как я могу получить эту работу? Мне нужно сделать это для фильтров, как
- содержит, используя .Contains()
- равна, мышление с помощью .equals()
- не содержит, мышления использования ! Field.contains (значение)
- не равна
- начинается с
- заканчивается
Могу ли я сделать что-то вроде этого, так что я могу применить все мои шаблоны регулярных выражений для всех вышеуказанных фильтров.
builder.Regex(x => x.CustomFields[-1].Value, new BsonRegularExpression($"/{filterValue}/i"));
Это преобразует запрос к, как показано ниже, но не получает никаких результатов
db.Notes.find({ "Project._id" : 74, "CustomFields.$.Value" : /bat/i, "IsDeleted" : false }).sort({ "CreatedDateTimeUtc" : -1 })
FYI: builder
FilterDefinition<Note>
является
Мой образец Примечания Коллекция выглядит так:
{
Name:"",
Email:"",
Tel:"",
Date:02 /21/1945,
CustomFields:[
{
Name:"",
Value:"",
IsSearchable:true,
},
{
Name:"",
Value:"",
IsSearchable:true,
},
{
Name:"",
Value:"",
IsSearchable:true,
},
{
Name:"",
Value:"",
IsSearchable:true,
}
]
}
нечувствительная часть - одна, и мне также нужно написать запрос, где начинается текст, текст заканчивается и текст не содержит. Я думаю, что я могу делать такие вещи только с BsonRegularexpression? – HaBo
Извините, я пропустил это как часть вопроса. Драйвер mongo корректно обрабатывает строки 'String.StartsWith()' и 'String.EndsWith() ', превращая их в'/^ 'и' $/'соответственно. он также должен превратить унарный не '!' в mongo '$ not: {}' – Taekahn
как насчет поиска «не содержит»? – HaBo