1

我有一个像

{

"Code" : "123ACThe three $#^",

. . . . 

}

我想查找3AC字段中字符串中任何位置的记录Code

注意:-字符AC应该不区分大小写

我是 mongoDb 的新手。如何实现这一目标?预先感谢您的回复。

更新

我试过这个代码 db.session.find({ "Code": { "$regex": '^(. ?(\b3AC\b)[^$] )$' } } );

得到这个工作

db.session.find({ "代码": { "$regex": '3AC.*'} } );

这是唯一的方法吗?以及如何使用本机驱动程序在 C# 中实现?

4

3 回答 3

1

这应该可以解决问题:

db.session.find({Code: /3AC/ })

或者如果你想忽略大小写:

db.session.find({Code: /3AC/i }) 
于 2013-11-07T18:04:28.223 回答
1

虽然通常不建议进行这样的搜索,因为不能使用索引(因为您的表达式未锚定到字符串的开头),但在 C# 中,您可以使用Query类的Matches 方法

Query.Matches("Code", "3AC.*")

where"3AC.*"表示您正在使用的正则表达式字符串。

MongoCollection<ExampleType> exampleCollection;
var query = Query.Matches("Code", "3AC.*");
foreach (var example in exampleCollection.Find(query)) {
    //
}
于 2013-11-07T19:13:54.783 回答
1

您还可以使用驱动程序的 LINQ 接口,驱动程序将为您构建正则表达式:

var query = sessionCollection.AsQueryable<Session>()
    .Where(s => s.Code.Contains("3AC"));
foreach (var session in query) { ... }
于 2013-11-07T19:34:55.340 回答