2010-03-26 41 views
1

有沒有人有任何想法如何使用MongoRegex進行文檔搜索?如何使用MongoRegex(MongoDB C#驅動程序)

我嘗試這一點,但沒有返回值回:

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 */ 

這是可能的驅動程序對正則表達式應用雙引號?

謝謝..

回答

2

你只是想要一個簡單的前綴查詢。你的正則表達式然後是^ + searchKey。另外,這個表單將允許mongodb在Name上使用索引。

var spec = new Document("Name", new MongoRegex(string.Format("^{0}",searchKey), "i")); 
collection.Find(spec) 
+0

Thanks Craig ... – heisthedon 2010-04-27 11:38:09

0

我認爲你需要不包含 「/」 S在C#中,即

spec.Add("Name", new MongoRegex(searchKey + "*", "i")); 
+0

它不起作用 – heisthedon 2010-04-07 10:04:06

0

挖的源代碼後,我終於找到了答案:)

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