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