C# 在mongodb中的混乱字符串处使用正则表达式过滤器
我从我的mongo系列中获得了以下字符串:C# 在mongodb中的混乱字符串处使用正则表达式过滤器,c#,mongodb,C#,Mongodb,我从我的mongo系列中获得了以下字符串: "{\"Id\":\"4573358d-8cac-44a4-85e0-2343wres4321\",\"CreationDateTime\":\"\\/Date(1477834196111)\\/\",\"DeviceId\":\"\",\"UserId\":\"b9cdd9d3-4ac8-4f95-8s44-1234wre44321\",\"UserFullName\":\"groot\",\"SystemId\":\"monitoring\",\"
"{\"Id\":\"4573358d-8cac-44a4-85e0-2343wres4321\",\"CreationDateTime\":\"\\/Date(1477834196111)\\/\",\"DeviceId\":\"\",\"UserId\":\"b9cdd9d3-4ac8-4f95-8s44-1234wre44321\",\"UserFullName\":\"groot\",\"SystemId\":\"monitoring\",\"SystemTitle\":\"monitoring\",\"EventId\":\"monitoring.events.udutyallcalculates\",\"EventTitle\":\"xxxx\",\"EventData\":[{\"Key\":\"LogID\",\"Value\":\"\",\"Children\":null},{\"Key\":\"SessionId\",\"Value\":\"GUID\",\"Children\":null},{\"Key\":\"Version\",\"Value\":\"Host- Version=1111\",\"Children\":null}],\"BusinessCode\":\"2-10-102606-46-1-0-0\",\"ProcessId\":\"00000000-0000-0000-0000-000000000000\",\"WorkItemId\":ttt,\"WKT\":\"\"}"
在查询之前,我必须声明一个过滤器,因为我想要BusinessCode以1-开头的那种信息。
现在我正在编写这个过滤器:
filters.Add(Builders<Message>.Filter.Where(x => x.Payload.Contains("BusinessCode\":\"" + area + "-")));
filters.Add(Builders.Filter.Where(x=>x.Payload.Contains(“BusinessCode\”:\“”+area+“-”)));
此筛选器返回以1开头的业务代码
12和其他以1开头的整数是包含的。我想使用正则表达式,但如何使用此命令?
我写过这样的话:
filters.Add(Builders<Message>.Filter.Regex(x => x.Payload.Contains("BusinessCode\":\"" + area + "-"), "/^" + area + "/-"));
filters.Add(Builders.Filter.Regex(x=>x.Payload.Contains(“BusinessCode\”:\“”+area+“-”),/^“+area+“/”);
但当我从我的收藏中查询时:
"var messages = GetDbMongo().GetCollection<Message>(DB_COLLECTION_MESSAGES)
.Find(Builders<Message>.Filter.Or(filters)).Sort(sort).Limit(count <= 0 ? 10 : count).ToList();"
“var messages=GetDbMongo().GetCollection(DB\u COLLECTION\u messages)
.Find(Builders.Filter.Or(filters)).Sort(Sort).Limit(count如果不正确地使用Builders.Filter.Regex,则只需将表达式传递给要使用的属性和Regex:
var codeRegex = @"1[^\""]*";
var regex = $@"\\""BusinessCode\\"":\\\""{codeRegex}\\""";
Builders<Message>.Filter.Regex(x => x.Payload, regex)
var codeRegex=@“1[^\”“]*”;
var regex=$@“\\”业务代码\\ \”:\\\“{codeRegex}\\”;
Builders.Filter.Regex(x=>x.Payload,Regex)
你能解释一下var regex=\'BusinessCode\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\“2-10-102606-46-1-0-0\\\\\\”
?我想从1开始。我必须做什么改变?这只是与我在“注入”示例中更新的regex匹配12-10-102606-46-1-0-0
不是常数。实际上,在其他文档中有许多具有不同值的业务代码。我只想筛选以1开头的业务代码。例如,这1从客户端接收。它可以是其他NUBMER也可以将代码更改为正则表达式…现在请参见示例,它将匹配代码sta与1及其后的任何内容进行RTIN
var codeRegex = @"1[^\""]*";
var regex = $@"\\""BusinessCode\\"":\\\""{codeRegex}\\""";
Builders<Message>.Filter.Regex(x => x.Payload, regex)