2011-11-03 64 views
0

我有一個消息系統,我希望根據傳入消息的模式調用不同的消息處理程序爲 。MongoDb有可能查詢與給定字符串匹配的模式嗎?

我有這個集合:

[ 
    { Pattern: "^a", Handler: "Handler1" }, 
    { Pattern: "^b", Handler: "Handler2" }, 
    { Pattern: "^c", Handler: "Handler3" } 
] 

對於給定的消息(字符串)我現在要尋找到消息的模式相匹配的第一個元素 然後提取處理器 名。

也就是說,對於消息「B唧唧歪歪」,我想提取 「Handler2」。

注意,我不想使用正則表達式查詢來查找在 數據庫一些字符串,它是周圍的其他方式:我想找到具有給定 字符串相匹配的模式元素 。

我的解決方案,現在是取圖案的整個列表 然後在我的應用程序代碼 迭代,並匹配了所有的模式,它工作正常,但我想知道如果有一些有效的蒙戈 查詢其可以用來代替?

回答

1

你應該罰款,你現在如果模式數量較少正在做它的方式。

如果你有大量的模式,你會成爲Halting problem變化的受害者: 有沒有簡單的方法來知道,如果一個模式匹配(或不),直到你真正與你輸入的字符串執行它(將這種模式想象成一個小程序)。由於只有一組有限的輸入(可能不是這種情況),所以您可以在MongoDB中存儲所有可能的輸入及其相應的模式。

希望有所幫助。

0

可能您需要自己實施匹配檢查並使用map/reduce樣式應用它。