Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在mongodb中的混乱字符串处使用正则表达式过滤器_C#_Mongodb - Fatal编程技术网

C# 在mongodb中的混乱字符串处使用正则表达式过滤器

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\",\"

我从我的mongo系列中获得了以下字符串:

"{\"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\":\"\"}"
在查询之前,我必须声明一个过滤器,因为我想要BusinessCode1-开头的那种信息。 现在我正在编写这个过滤器:

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)