8
我需要使用MongoDB的C#驱动使用MongoDB的C#驱动程序写入与正则表达式查询ElementMatch
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))
查询它产生蒙戈查询作为
构建以下查询db.Notes.find({ "Group._id" : 74, "CustomFields" : { "$elemMatch" : { "Value" : /batch/s } }, "IsDeleted" : false }).sort({ "CreatedDateTimeUtc" : -1 })
如果您发现它在/batch/s
而不是i /batch/i
我该如何获得这项工作?我需要这样做的过滤器一样
- 包含,使用。载有()
- 等于,使用.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