2011-11-03 63 views
0

我有一个消息系统,我希望根据传入消息的模式调用不同的消息处理程序为 。MongoDb有可能查询与给定字符串匹配的模式吗?

我有这个集合:

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

对于给定的消息(字符串)我现在要寻找到消息的模式相匹配的第一个元素 然后提取处理器 名。

也就是说,对于消息“B唧唧歪歪”,我想提取 “Handler2”。

注意,我不想使用正则表达式查询来查找在 数据库一些字符串,它是周围的其他方式:我想找到具有给定 字符串相匹配的模式元素 。

我的解决方案,现在是取图案的整个列表 然后在我的应用程序代码 迭代,并匹配了所有的模式,它工作正常,但我想知道如果有一些有效的蒙戈 查询其可以用来代替?

回答

1

你应该罚款,你现在如果模式数量较少正在做它的方式。

如果你有大量的模式,你会成为Halting problem变化的受害者: 有没有简单的方法来知道,如果一个模式匹配(或不),直到你真正与你输入的字符串执行它(将这种模式想象成一个小程序)。由于只有一组有限的输入(可能不是这种情况),所以您可以在MongoDB中存储所有可能的输入及其相应的模式。

希望有所帮助。

0

可能您需要自己实施匹配检查并使用map/reduce样式应用它。