3

有谁知道如何使用 MongoRegex 进行文档搜索?

我尝试了这个,但没有返回:

var spec = new Document();
spec.Add("Name", new MongoRegex("/" + searchKey + "*/", "i"));
collection.Find(spec)

想知道为什么它不起作用,我尝试从控制台执行以下命令:

db.things.find({"Name":/john*/i}) /* WORKS */
db.things.find({"Name":"/john*/i"}) /* DOESN'T WORK */

驱动程序是否有可能对正则表达式应用双引号?

谢谢..

4

3 回答 3

4

你只需要一个简单的前缀查询。您的正则表达式是 ^ + searchKey。此外,此表单将允许 mongodb 使用 Name 上的索引。

var spec = new Document("Name", new MongoRegex(string.Format("^{0}",searchKey), "i"));
collection.Find(spec)
于 2010-04-23T15:45:35.880 回答
1

我认为您不需要在 C# 中包含“/”,即

spec.Add("Name", new MongoRegex(searchKey + "*", "i"));
于 2010-03-28T13:13:37.133 回答
1

挖了源码,终于找到答案了:)

var spec = new Document();
spec.Add("Name", new MongoRegex(".*" + searchKey + ".*", "i"));
collection.Find(spec)
于 2010-04-07T10:25:57.800 回答