Reputation: 3707
Has anyone have any idea how to use MongoRegex for the document search?
I attempted this, but returns nothing back:
var spec = new Document();
spec.Add("Name", new MongoRegex("/" + searchKey + "*/", "i"));
collection.Find(spec)
Wondering why it doesn't work, I tried to execute following command from the console:
db.things.find({"Name":/john*/i}) /* WORKS */
db.things.find({"Name":"/john*/i"}) /* DOESN'T WORK */
Is that possible that the driver applies double quotation to the regex?
Thanks..
Upvotes: 3
Views: 6199
Reputation: 12624
you just want a simple prefix query. Your regex is then ^ + searchKey. Also, this form will allow mongodb to use an index on Name.
var spec = new Document("Name", new MongoRegex(string.Format("^{0}",searchKey), "i"));
collection.Find(spec)
Upvotes: 4
Reputation: 3707
After digging the source code, I finally found the answer :)
var spec = new Document();
spec.Add("Name", new MongoRegex(".*" + searchKey + ".*", "i"));
collection.Find(spec)
Upvotes: 1
Reputation: 23592
I think you need to not include the "/"s in C#, i.e.,
spec.Add("Name", new MongoRegex(searchKey + "*", "i"));
Upvotes: 1